@retell-ai/mcp-server 5.31.1 → 5.32.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/code-tool.d.mts.map +1 -1
  2. package/code-tool.d.ts.map +1 -1
  3. package/code-tool.js +2 -53
  4. package/code-tool.js.map +1 -1
  5. package/code-tool.mjs +3 -54
  6. package/code-tool.mjs.map +1 -1
  7. package/docs-search-tool.d.mts.map +1 -1
  8. package/docs-search-tool.d.ts.map +1 -1
  9. package/docs-search-tool.js +1 -41
  10. package/docs-search-tool.js.map +1 -1
  11. package/docs-search-tool.mjs +1 -41
  12. package/docs-search-tool.mjs.map +1 -1
  13. package/instructions.d.mts.map +1 -1
  14. package/instructions.d.ts.map +1 -1
  15. package/instructions.js +2 -18
  16. package/instructions.js.map +1 -1
  17. package/instructions.mjs +2 -18
  18. package/instructions.mjs.map +1 -1
  19. package/local-docs-search.js +253 -253
  20. package/local-docs-search.js.map +1 -1
  21. package/local-docs-search.mjs +253 -253
  22. package/local-docs-search.mjs.map +1 -1
  23. package/methods.js +140 -140
  24. package/methods.js.map +1 -1
  25. package/methods.mjs +140 -140
  26. package/methods.mjs.map +1 -1
  27. package/options.d.mts +2 -2
  28. package/options.d.mts.map +1 -1
  29. package/options.d.ts +2 -2
  30. package/options.d.ts.map +1 -1
  31. package/options.js +6 -6
  32. package/options.js.map +1 -1
  33. package/options.mjs +6 -6
  34. package/options.mjs.map +1 -1
  35. package/package.json +2 -2
  36. package/server.js +1 -1
  37. package/server.js.map +1 -1
  38. package/server.mjs +1 -1
  39. package/server.mjs.map +1 -1
  40. package/src/code-tool.ts +4 -83
  41. package/src/docs-search-tool.ts +2 -61
  42. package/src/instructions.ts +2 -28
  43. package/src/local-docs-search.ts +334 -334
  44. package/src/methods.ts +140 -140
  45. package/src/options.ts +9 -9
  46. package/src/server.ts +1 -1
@@ -30,13 +30,13 @@ const EMBEDDED_METHODS = [
30
30
  method: 'client.call.createPhoneCall',
31
31
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst phoneCallResponse = await client.call.createPhoneCall({\n from_number: '+14157774444',\n to_number: '+12137774445',\n});\n\nconsole.log(phoneCallResponse.agent_id);",
32
32
  },
33
+ http: {
34
+ example: 'curl https://api.retellai.com/v2/create-phone-call \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n --max-time 120 \\\n -d \'{\n "from_number": "+14157774444",\n "to_number": "+12137774445",\n "custom_sip_headers": {\n "X-Custom-Header": "Custom Value"\n },\n "ignore_e164_validation": true,\n "override_agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "retell_llm_dynamic_variables": {\n "customer_name": "John Doe"\n }\n }\'',
35
+ },
33
36
  python: {
34
37
  method: 'call.create_phone_call',
35
38
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nphone_call_response = client.call.create_phone_call(\n from_number="+14157774444",\n to_number="+12137774445",\n)\nprint(phone_call_response.agent_id)',
36
39
  },
37
- http: {
38
- example: 'curl https://api.retellai.com/v2/create-phone-call \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n --max-time 120 \\\n -d \'{\n "from_number": "+14157774444",\n "to_number": "+12137774445",\n "custom_sip_headers": {\n "X-Custom-Header": "Custom Value"\n },\n "ignore_e164_validation": true,\n "override_agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "retell_llm_dynamic_variables": {\n "customer_name": "John Doe"\n }\n }\'',
39
- },
40
40
  },
41
41
  },
42
42
  {
@@ -64,13 +64,13 @@ const EMBEDDED_METHODS = [
64
64
  method: 'client.call.registerPhoneCall',
65
65
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst phoneCallResponse = await client.call.registerPhoneCall({\n agent_id: 'oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD',\n});\n\nconsole.log(phoneCallResponse.agent_id);",
66
66
  },
67
+ http: {
68
+ example: 'curl https://api.retellai.com/v2/register-phone-call \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "direction": "inbound",\n "from_number": "+14157774444",\n "retell_llm_dynamic_variables": {\n "customer_name": "John Doe"\n },\n "to_number": "+12137774445"\n }\'',
69
+ },
67
70
  python: {
68
71
  method: 'call.register_phone_call',
69
72
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nphone_call_response = client.call.register_phone_call(\n agent_id="oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n)\nprint(phone_call_response.agent_id)',
70
73
  },
71
- http: {
72
- example: 'curl https://api.retellai.com/v2/register-phone-call \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "direction": "inbound",\n "from_number": "+14157774444",\n "retell_llm_dynamic_variables": {\n "customer_name": "John Doe"\n },\n "to_number": "+12137774445"\n }\'',
73
- },
74
74
  },
75
75
  },
76
76
  {
@@ -97,13 +97,13 @@ const EMBEDDED_METHODS = [
97
97
  method: 'client.call.createWebCall',
98
98
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst webCallResponse = await client.call.createWebCall({\n agent_id: 'oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD',\n});\n\nconsole.log(webCallResponse.agent_id);",
99
99
  },
100
+ http: {
101
+ example: 'curl https://api.retellai.com/v2/create-web-call \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "current_node_id": "collect_info",\n "current_state": "information_collection",\n "retell_llm_dynamic_variables": {\n "customer_name": "John Doe"\n }\n }\'',
102
+ },
100
103
  python: {
101
104
  method: 'call.create_web_call',
102
105
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nweb_call_response = client.call.create_web_call(\n agent_id="oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n)\nprint(web_call_response.agent_id)',
103
106
  },
104
- http: {
105
- example: 'curl https://api.retellai.com/v2/create-web-call \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "current_node_id": "collect_info",\n "current_state": "information_collection",\n "retell_llm_dynamic_variables": {\n "customer_name": "John Doe"\n }\n }\'',
106
- },
107
107
  },
108
108
  },
109
109
  {
@@ -122,13 +122,13 @@ const EMBEDDED_METHODS = [
122
122
  method: 'client.call.retrieve',
123
123
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst callResponse = await client.call.retrieve('119c3f8e47135a29e65947eeb34cf12d');\n\nconsole.log(callResponse);",
124
124
  },
125
+ http: {
126
+ example: 'curl https://api.retellai.com/v2/get-call/$CALL_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
127
+ },
125
128
  python: {
126
129
  method: 'call.retrieve',
127
130
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\ncall_response = client.call.retrieve(\n "119c3f8e47135a29e65947eeb34cf12d",\n)\nprint(call_response)',
128
131
  },
129
- http: {
130
- example: 'curl https://api.retellai.com/v2/get-call/$CALL_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
131
- },
132
132
  },
133
133
  },
134
134
  {
@@ -154,13 +154,13 @@ const EMBEDDED_METHODS = [
154
154
  method: 'client.call.list',
155
155
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst calls = await client.call.list();\n\nconsole.log(calls.has_more);",
156
156
  },
157
+ http: {
158
+ example: 'curl https://api.retellai.com/v3/list-calls \\\n -X POST \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n --max-time 300',
159
+ },
157
160
  python: {
158
161
  method: 'call.list',
159
162
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\ncalls = client.call.list()\nprint(calls.has_more)',
160
163
  },
161
- http: {
162
- example: 'curl https://api.retellai.com/v3/list-calls \\\n -X POST \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n --max-time 300',
163
- },
164
164
  },
165
165
  },
166
166
  {
@@ -185,13 +185,13 @@ const EMBEDDED_METHODS = [
185
185
  method: 'client.call.update',
186
186
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst callResponse = await client.call.update('call_a4441234567890777c4a4a123e6', {\n data_storage_setting: 'everything_except_pii',\n metadata: { customer_id: 'cust_123', notes: 'Follow-up required' },\n});\n\nconsole.log(callResponse);",
187
187
  },
188
+ http: {
189
+ example: 'curl https://api.retellai.com/v2/update-call/$CALL_ID \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "custom_attributes": {\n "custom_attribute_1": "value1",\n "custom_attribute_2": "value2"\n },\n "data_storage_setting": "everything_except_pii",\n "metadata": {\n "customer_id": "cust_123",\n "notes": "Follow-up required"\n },\n "override_dynamic_variables": {\n "additional_discount": "15%"\n }\n }\'',
190
+ },
188
191
  python: {
189
192
  method: 'call.update',
190
193
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\ncall_response = client.call.update(\n call_id="call_a4441234567890777c4a4a123e6",\n data_storage_setting="everything_except_pii",\n metadata={\n "customer_id": "cust_123",\n "notes": "Follow-up required",\n },\n)\nprint(call_response)',
191
194
  },
192
- http: {
193
- example: 'curl https://api.retellai.com/v2/update-call/$CALL_ID \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "custom_attributes": {\n "custom_attribute_1": "value1",\n "custom_attribute_2": "value2"\n },\n "data_storage_setting": "everything_except_pii",\n "metadata": {\n "customer_id": "cust_123",\n "notes": "Follow-up required"\n },\n "override_dynamic_variables": {\n "additional_discount": "15%"\n }\n }\'',
194
- },
195
195
  },
196
196
  },
197
197
  {
@@ -209,13 +209,13 @@ const EMBEDDED_METHODS = [
209
209
  method: 'client.call.stop',
210
210
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.call.stop('call_a4441234567890777c4a4a123e6');",
211
211
  },
212
+ http: {
213
+ example: 'curl https://api.retellai.com/v2/stop-call/$CALL_ID \\\n -X POST \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
214
+ },
212
215
  python: {
213
216
  method: 'call.stop',
214
217
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.call.stop(\n "call_a4441234567890777c4a4a123e6",\n)',
215
218
  },
216
- http: {
217
- example: 'curl https://api.retellai.com/v2/stop-call/$CALL_ID \\\n -X POST \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
218
- },
219
219
  },
220
220
  },
221
221
  {
@@ -233,13 +233,13 @@ const EMBEDDED_METHODS = [
233
233
  method: 'client.call.delete',
234
234
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.call.delete('119c3f8e47135a29e65947eeb34cf12d');",
235
235
  },
236
+ http: {
237
+ example: 'curl https://api.retellai.com/v2/delete-call/$CALL_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
238
+ },
236
239
  python: {
237
240
  method: 'call.delete',
238
241
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.call.delete(\n "119c3f8e47135a29e65947eeb34cf12d",\n)',
239
242
  },
240
- http: {
241
- example: 'curl https://api.retellai.com/v2/delete-call/$CALL_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
242
- },
243
243
  },
244
244
  },
245
245
  {
@@ -263,13 +263,13 @@ const EMBEDDED_METHODS = [
263
263
  method: 'client.chat.create',
264
264
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst chatResponse = await client.chat.create({ agent_id: 'oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD' });\n\nconsole.log(chatResponse.agent_id);",
265
265
  },
266
+ http: {
267
+ example: 'curl https://api.retellai.com/create-chat \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "retell_llm_dynamic_variables": {\n "customer_name": "John Doe"\n }\n }\'',
268
+ },
266
269
  python: {
267
270
  method: 'chat.create',
268
271
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nchat_response = client.chat.create(\n agent_id="oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n)\nprint(chat_response.agent_id)',
269
272
  },
270
- http: {
271
- example: 'curl https://api.retellai.com/create-chat \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "retell_llm_dynamic_variables": {\n "customer_name": "John Doe"\n }\n }\'',
272
- },
273
273
  },
274
274
  },
275
275
  {
@@ -295,13 +295,13 @@ const EMBEDDED_METHODS = [
295
295
  method: 'client.chat.createSMSChat',
296
296
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst chatResponse = await client.chat.createSMSChat({\n from_number: '+12137771234',\n to_number: '+14155551234',\n});\n\nconsole.log(chatResponse.agent_id);",
297
297
  },
298
+ http: {
299
+ example: 'curl https://api.retellai.com/create-sms-chat \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "from_number": "+12137771234",\n "to_number": "+14155551234",\n "override_agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "retell_llm_dynamic_variables": {\n "customer_name": "John Doe"\n }\n }\'',
300
+ },
298
301
  python: {
299
302
  method: 'chat.create_sms_chat',
300
303
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nchat_response = client.chat.create_sms_chat(\n from_number="+12137771234",\n to_number="+14155551234",\n)\nprint(chat_response.agent_id)',
301
304
  },
302
- http: {
303
- example: 'curl https://api.retellai.com/create-sms-chat \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "from_number": "+12137771234",\n "to_number": "+14155551234",\n "override_agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "retell_llm_dynamic_variables": {\n "customer_name": "John Doe"\n }\n }\'',
304
- },
305
305
  },
306
306
  },
307
307
  {
@@ -319,13 +319,13 @@ const EMBEDDED_METHODS = [
319
319
  method: 'client.chat.end',
320
320
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.chat.end('16b980523634a6dc504898cda492e939');",
321
321
  },
322
+ http: {
323
+ example: 'curl https://api.retellai.com/end-chat/$CHAT_ID \\\n -X PATCH \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
324
+ },
322
325
  python: {
323
326
  method: 'chat.end',
324
327
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.chat.end(\n "16b980523634a6dc504898cda492e939",\n)',
325
328
  },
326
- http: {
327
- example: 'curl https://api.retellai.com/end-chat/$CHAT_ID \\\n -X PATCH \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
328
- },
329
329
  },
330
330
  },
331
331
  {
@@ -344,13 +344,13 @@ const EMBEDDED_METHODS = [
344
344
  method: 'client.chat.retrieve',
345
345
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst chatResponse = await client.chat.retrieve('16b980523634a6dc504898cda492e939');\n\nconsole.log(chatResponse.agent_id);",
346
346
  },
347
+ http: {
348
+ example: 'curl https://api.retellai.com/get-chat/$CHAT_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
349
+ },
347
350
  python: {
348
351
  method: 'chat.retrieve',
349
352
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nchat_response = client.chat.retrieve(\n "16b980523634a6dc504898cda492e939",\n)\nprint(chat_response.agent_id)',
350
353
  },
351
- http: {
352
- example: 'curl https://api.retellai.com/get-chat/$CHAT_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
353
- },
354
354
  },
355
355
  },
356
356
  {
@@ -369,13 +369,13 @@ const EMBEDDED_METHODS = [
369
369
  method: 'client.chat.createChatCompletion',
370
370
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.chat.createChatCompletion({\n chat_id: 'oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD',\n content: 'hi how are you doing?',\n});\n\nconsole.log(response.messages);",
371
371
  },
372
+ http: {
373
+ example: 'curl https://api.retellai.com/create-chat-completion \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n --max-time 300 \\\n -d \'{\n "chat_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "content": "hi how are you doing?"\n }\'',
374
+ },
372
375
  python: {
373
376
  method: 'chat.create_chat_completion',
374
377
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nresponse = client.chat.create_chat_completion(\n chat_id="oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n content="hi how are you doing?",\n)\nprint(response.messages)',
375
378
  },
376
- http: {
377
- example: 'curl https://api.retellai.com/create-chat-completion \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n --max-time 300 \\\n -d \'{\n "chat_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "content": "hi how are you doing?"\n }\'',
378
- },
379
379
  },
380
380
  },
381
381
  {
@@ -401,13 +401,13 @@ const EMBEDDED_METHODS = [
401
401
  method: 'client.chat.list',
402
402
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst chats = await client.chat.list();\n\nconsole.log(chats.has_more);",
403
403
  },
404
+ http: {
405
+ example: 'curl https://api.retellai.com/v3/list-chats \\\n -X POST \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n --max-time 300',
406
+ },
404
407
  python: {
405
408
  method: 'chat.list',
406
409
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nchats = client.chat.list()\nprint(chats.has_more)',
407
410
  },
408
- http: {
409
- example: 'curl https://api.retellai.com/v3/list-chats \\\n -X POST \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n --max-time 300',
410
- },
411
411
  },
412
412
  },
413
413
  {
@@ -432,13 +432,13 @@ const EMBEDDED_METHODS = [
432
432
  method: 'client.chat.update',
433
433
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst chatResponse = await client.chat.update('chat_98c1a2157aa0559144d67bb0729', {\n data_storage_setting: 'everything',\n metadata: { customer_id: 'cust_123', notes: 'Follow-up required' },\n override_dynamic_variables: { additional_discount: '15%' },\n});\n\nconsole.log(chatResponse.agent_id);",
434
434
  },
435
+ http: {
436
+ example: 'curl https://api.retellai.com/update-chat/$CHAT_ID \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "custom_attributes": {\n "custom_attribute_1": "value1",\n "custom_attribute_2": "value2"\n },\n "data_storage_setting": "everything",\n "metadata": {\n "customer_id": "cust_123",\n "notes": "Follow-up required"\n },\n "override_dynamic_variables": {\n "additional_discount": "15%"\n }\n }\'',
437
+ },
435
438
  python: {
436
439
  method: 'chat.update',
437
440
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nchat_response = client.chat.update(\n chat_id="chat_98c1a2157aa0559144d67bb0729",\n data_storage_setting="everything",\n metadata={\n "customer_id": "cust_123",\n "notes": "Follow-up required",\n },\n override_dynamic_variables={\n "additional_discount": "15%"\n },\n)\nprint(chat_response.agent_id)',
438
441
  },
439
- http: {
440
- example: 'curl https://api.retellai.com/update-chat/$CHAT_ID \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "custom_attributes": {\n "custom_attribute_1": "value1",\n "custom_attribute_2": "value2"\n },\n "data_storage_setting": "everything",\n "metadata": {\n "customer_id": "cust_123",\n "notes": "Follow-up required"\n },\n "override_dynamic_variables": {\n "additional_discount": "15%"\n }\n }\'',
441
- },
442
442
  },
443
443
  },
444
444
  {
@@ -456,13 +456,13 @@ const EMBEDDED_METHODS = [
456
456
  method: 'client.chat.delete',
457
457
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.chat.delete('16b980523634a6dc504898cda492e939');",
458
458
  },
459
+ http: {
460
+ example: 'curl https://api.retellai.com/delete-chat/$CHAT_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
461
+ },
459
462
  python: {
460
463
  method: 'chat.delete',
461
464
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.chat.delete(\n "16b980523634a6dc504898cda492e939",\n)',
462
465
  },
463
- http: {
464
- example: 'curl https://api.retellai.com/delete-chat/$CHAT_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
465
- },
466
466
  },
467
467
  },
468
468
  {
@@ -489,19 +489,19 @@ const EMBEDDED_METHODS = [
489
489
  'transport?: string;',
490
490
  ],
491
491
  response: "{ last_modification_timestamp: number; phone_number: string; phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'; allowed_inbound_country_list?: string[]; allowed_outbound_country_list?: string[]; area_code?: number; fallback_number?: string; inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_webhook_url?: string; inbound_webhook_url?: string; nickname?: string; outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; phone_number_pretty?: string; sip_outbound_trunk_config?: { auth_username?: string; termination_uri?: string; transport?: string; }; }",
492
- markdown: "## create\n\n`client.phoneNumber.create(allowed_inbound_country_list?: string[], allowed_outbound_country_list?: string[], area_code?: number, country_code?: 'US' | 'CA', fallback_number?: string, inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], inbound_webhook_url?: string, nickname?: string, number_provider?: 'twilio' | 'telnyx', outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], phone_number?: string, toll_free?: boolean, transport?: string): { last_modification_timestamp: number; phone_number: string; phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'; allowed_inbound_country_list?: string[]; allowed_outbound_country_list?: string[]; area_code?: number; fallback_number?: string; inbound_agents?: object[]; inbound_sms_agents?: object[]; inbound_sms_webhook_url?: string; inbound_webhook_url?: string; nickname?: string; outbound_agents?: object[]; outbound_sms_agents?: object[]; phone_number_pretty?: string; sip_outbound_trunk_config?: object; }`\n\n**post** `/create-phone-number`\n\nBuy a new phone number & Bind agents\n\n### Parameters\n\n- `allowed_inbound_country_list?: string[]`\n List of ISO 3166-1 alpha-2 country codes from which inbound calls are allowed. If not set or empty, calls from all countries are allowed.\n\n- `allowed_outbound_country_list?: string[]`\n List of ISO 3166-1 alpha-2 country codes to which outbound calls are allowed. If not set or empty, calls to all countries are allowed.\n\n- `area_code?: number`\n Area code of the number to obtain. Format is a 3 digit integer. Currently only supports US area code.\n\n- `country_code?: 'US' | 'CA'`\n The ISO 3166-1 alpha-2 country code of the number you are trying to purchase. If left empty, will default to \"US\".\n\n- `fallback_number?: string`\n Enterprise only. Phone number to transfer inbound calls to when organization is in outage mode or when an inbound call cannot get a concurrency slot before the fallback timeout. Can be either a Retell phone number or an external number. Cannot be the same as this phone number, and cannot be a number that already has its own fallback configured (prevents nested forwarding).\n\n- `inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Inbound agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each inbound call, with probability proportional to the weight. Total weights must add up to 1.\n\n- `inbound_webhook_url?: string`\n If set, will send a webhook for inbound calls, where you can to override agent id, set dynamic variables and other fields specific to that call.\n\n- `nickname?: string`\n Nickname of the number. This is for your reference only.\n\n- `number_provider?: 'twilio' | 'telnyx'`\n The provider to purchase the phone number from. Default to twilio.\n\n- `outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Outbound agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each outbound call, with probability proportional to the weight. Total weights must add up to 1.\n\n- `phone_number?: string`\n The number you are trying to purchase in E.164 format of the number (+country code then number with no space and no special characters).\n\n- `toll_free?: boolean`\n Whether to purchase a toll-free number. Toll-free numbers incur higher costs.\n\n- `transport?: string`\n Outbound transport protocol to use for the phone number. Valid values are \"TLS\", \"TCP\" and \"UDP\". Default is \"TCP\".\n\n### Returns\n\n- `{ last_modification_timestamp: number; phone_number: string; phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'; allowed_inbound_country_list?: string[]; allowed_outbound_country_list?: string[]; area_code?: number; fallback_number?: string; inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_webhook_url?: string; inbound_webhook_url?: string; nickname?: string; outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; phone_number_pretty?: string; sip_outbound_trunk_config?: { auth_username?: string; termination_uri?: string; transport?: string; }; }`\n\n - `last_modification_timestamp: number`\n - `phone_number: string`\n - `phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'`\n - `allowed_inbound_country_list?: string[]`\n - `allowed_outbound_country_list?: string[]`\n - `area_code?: number`\n - `fallback_number?: string`\n - `inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `inbound_sms_webhook_url?: string`\n - `inbound_webhook_url?: string`\n - `nickname?: string`\n - `outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `phone_number_pretty?: string`\n - `sip_outbound_trunk_config?: { auth_username?: string; termination_uri?: string; transport?: string; }`\n\n### Example\n\n```typescript\nimport Retell from 'retell-sdk';\n\nconst client = new Retell();\n\nconst phoneNumberResponse = await client.phoneNumber.create();\n\nconsole.log(phoneNumberResponse);\n```",
492
+ markdown: "## create\n\n`client.phoneNumber.create(allowed_inbound_country_list?: string[], allowed_outbound_country_list?: string[], area_code?: number, country_code?: 'US' | 'CA', fallback_number?: string, inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], inbound_webhook_url?: string, nickname?: string, number_provider?: 'twilio' | 'telnyx', outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], phone_number?: string, toll_free?: boolean, transport?: string): { last_modification_timestamp: number; phone_number: string; phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'; allowed_inbound_country_list?: string[]; allowed_outbound_country_list?: string[]; area_code?: number; fallback_number?: string; inbound_agents?: object[]; inbound_sms_agents?: object[]; inbound_sms_webhook_url?: string; inbound_webhook_url?: string; nickname?: string; outbound_agents?: object[]; outbound_sms_agents?: object[]; phone_number_pretty?: string; sip_outbound_trunk_config?: object; }`\n\n**post** `/create-phone-number`\n\nBuy a new phone number & Bind agents\n\n### Parameters\n\n- `allowed_inbound_country_list?: string[]`\n List of ISO 3166-1 alpha-2 country codes from which inbound calls are allowed. If not set or empty, calls from all countries are allowed.\n\n- `allowed_outbound_country_list?: string[]`\n List of ISO 3166-1 alpha-2 country codes to which outbound calls are allowed. If not set or empty, calls to all countries are allowed.\n\n- `area_code?: number`\n Area code of the number to obtain. Format is a 3 digit integer. Currently only supports US area code.\n\n- `country_code?: 'US' | 'CA'`\n The ISO 3166-1 alpha-2 country code of the number you are trying to purchase. If left empty, will default to \"US\".\n\n- `fallback_number?: string`\n Enterprise only. Phone number to transfer inbound calls to when organization is in outage mode or when an inbound call cannot get a concurrency slot before the fallback timeout. Can be either a Retell phone number or an external number. Cannot be the same as this phone number, and cannot be a number that already has its own fallback configured (prevents nested forwarding).\n\n- `inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Inbound agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each inbound call, with probability proportional to the weight. Total weights must add up to 1.\n\n- `inbound_webhook_url?: string`\n If set, will send a webhook for inbound calls, where you can override agent id, set dynamic variables and other fields specific to that call.\n\n- `nickname?: string`\n Nickname of the number. This is for your reference only.\n\n- `number_provider?: 'twilio' | 'telnyx'`\n The provider to purchase the phone number from. Default to twilio.\n\n- `outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Outbound agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each outbound call, with probability proportional to the weight. Total weights must add up to 1.\n\n- `phone_number?: string`\n The number you are trying to purchase in E.164 format of the number (+country code then number with no space and no special characters).\n\n- `toll_free?: boolean`\n Whether to purchase a toll-free number. Toll-free numbers incur higher costs.\n\n- `transport?: string`\n Outbound transport protocol to use for the phone number. Valid values are \"TLS\", \"TCP\" and \"UDP\". Default is \"TCP\".\n\n### Returns\n\n- `{ last_modification_timestamp: number; phone_number: string; phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'; allowed_inbound_country_list?: string[]; allowed_outbound_country_list?: string[]; area_code?: number; fallback_number?: string; inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_webhook_url?: string; inbound_webhook_url?: string; nickname?: string; outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; phone_number_pretty?: string; sip_outbound_trunk_config?: { auth_username?: string; termination_uri?: string; transport?: string; }; }`\n\n - `last_modification_timestamp: number`\n - `phone_number: string`\n - `phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'`\n - `allowed_inbound_country_list?: string[]`\n - `allowed_outbound_country_list?: string[]`\n - `area_code?: number`\n - `fallback_number?: string`\n - `inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `inbound_sms_webhook_url?: string`\n - `inbound_webhook_url?: string`\n - `nickname?: string`\n - `outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `phone_number_pretty?: string`\n - `sip_outbound_trunk_config?: { auth_username?: string; termination_uri?: string; transport?: string; }`\n\n### Example\n\n```typescript\nimport Retell from 'retell-sdk';\n\nconst client = new Retell();\n\nconst phoneNumberResponse = await client.phoneNumber.create();\n\nconsole.log(phoneNumberResponse);\n```",
493
493
  perLanguage: {
494
494
  typescript: {
495
495
  method: 'client.phoneNumber.create',
496
496
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst phoneNumberResponse = await client.phoneNumber.create();\n\nconsole.log(phoneNumberResponse.last_modification_timestamp);",
497
497
  },
498
+ http: {
499
+ example: 'curl https://api.retellai.com/create-phone-number \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "allowed_inbound_country_list": [\n "US",\n "CA",\n "GB"\n ],\n "allowed_outbound_country_list": [\n "US",\n "CA"\n ],\n "area_code": 415,\n "country_code": "US",\n "fallback_number": "+14155551234",\n "inbound_webhook_url": "https://example.com/inbound-webhook",\n "nickname": "Frontdesk Number",\n "number_provider": "twilio",\n "phone_number": "+14157774444",\n "transport": "TCP"\n }\'',
500
+ },
498
501
  python: {
499
502
  method: 'phone_number.create',
500
503
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nphone_number_response = client.phone_number.create()\nprint(phone_number_response.last_modification_timestamp)',
501
504
  },
502
- http: {
503
- example: 'curl https://api.retellai.com/create-phone-number \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "allowed_inbound_country_list": [\n "US",\n "CA",\n "GB"\n ],\n "allowed_outbound_country_list": [\n "US",\n "CA"\n ],\n "area_code": 415,\n "country_code": "US",\n "fallback_number": "+14155551234",\n "inbound_webhook_url": "https://example.com/inbound-webhook",\n "nickname": "Frontdesk Number",\n "number_provider": "twilio",\n "phone_number": "+14157774444",\n "transport": "TCP"\n }\'',
504
- },
505
505
  },
506
506
  },
507
507
  {
@@ -527,19 +527,19 @@ const EMBEDDED_METHODS = [
527
527
  'transport?: string;',
528
528
  ],
529
529
  response: "{ last_modification_timestamp: number; phone_number: string; phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'; allowed_inbound_country_list?: string[]; allowed_outbound_country_list?: string[]; area_code?: number; fallback_number?: string; inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_webhook_url?: string; inbound_webhook_url?: string; nickname?: string; outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; phone_number_pretty?: string; sip_outbound_trunk_config?: { auth_username?: string; termination_uri?: string; transport?: string; }; }",
530
- markdown: "## import\n\n`client.phoneNumber.import(phone_number: string, termination_uri: string, allowed_inbound_country_list?: string[], allowed_outbound_country_list?: string[], ignore_e164_validation?: boolean, inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], inbound_webhook_url?: string, nickname?: string, outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], sip_trunk_auth_password?: string, sip_trunk_auth_username?: string, transport?: string): { last_modification_timestamp: number; phone_number: string; phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'; allowed_inbound_country_list?: string[]; allowed_outbound_country_list?: string[]; area_code?: number; fallback_number?: string; inbound_agents?: object[]; inbound_sms_agents?: object[]; inbound_sms_webhook_url?: string; inbound_webhook_url?: string; nickname?: string; outbound_agents?: object[]; outbound_sms_agents?: object[]; phone_number_pretty?: string; sip_outbound_trunk_config?: object; }`\n\n**post** `/import-phone-number`\n\nImport a phone number from custom telephony & Bind agents\n\n### Parameters\n\n- `phone_number: string`\n The number you are trying to import in E.164 format of the number (+country code, then number with no space, no special characters), used as the unique identifier for phone number APIs.\n\n- `termination_uri: string`\n The termination uri to uniquely identify your elastic SIP trunk. This is used for outbound calls. For Twilio elastic SIP trunks it always end with \".pstn.twilio.com\".\n\n- `allowed_inbound_country_list?: string[]`\n List of ISO 3166-1 alpha-2 country codes from which inbound calls are allowed. If not set or empty, calls from all countries are allowed.\n\n- `allowed_outbound_country_list?: string[]`\n List of ISO 3166-1 alpha-2 country codes to which outbound calls are allowed. If not set or empty, calls to all countries are allowed.\n\n- `ignore_e164_validation?: boolean`\n If true, E.164 validation for phone_number is skipped. This is useful for internal pseudo numbers when using custom telephony. If omitted, default is true. Must be a boolean literal; string values like \"true\" or \"false\" are invalid.\n\n- `inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Inbound agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each inbound call, with probability proportional to the weight. Total weights must add up to 1.\n\n- `inbound_webhook_url?: string`\n If set, will send a webhook for inbound calls, where you can to override agent id, set dynamic variables and other fields specific to that call.\n\n- `nickname?: string`\n Nickname of the number. This is for your reference only.\n\n- `outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Outbound agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each outbound call, with probability proportional to the weight. Total weights must add up to 1.\n\n- `sip_trunk_auth_password?: string`\n The password used for authentication for the SIP trunk.\n\n- `sip_trunk_auth_username?: string`\n The username used for authentication for the SIP trunk.\n\n- `transport?: string`\n Outbound transport protocol to update for the phone number. Valid values are \"TLS\", \"TCP\" and \"UDP\". Default is \"TCP\".\n\n### Returns\n\n- `{ last_modification_timestamp: number; phone_number: string; phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'; allowed_inbound_country_list?: string[]; allowed_outbound_country_list?: string[]; area_code?: number; fallback_number?: string; inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_webhook_url?: string; inbound_webhook_url?: string; nickname?: string; outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; phone_number_pretty?: string; sip_outbound_trunk_config?: { auth_username?: string; termination_uri?: string; transport?: string; }; }`\n\n - `last_modification_timestamp: number`\n - `phone_number: string`\n - `phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'`\n - `allowed_inbound_country_list?: string[]`\n - `allowed_outbound_country_list?: string[]`\n - `area_code?: number`\n - `fallback_number?: string`\n - `inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `inbound_sms_webhook_url?: string`\n - `inbound_webhook_url?: string`\n - `nickname?: string`\n - `outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `phone_number_pretty?: string`\n - `sip_outbound_trunk_config?: { auth_username?: string; termination_uri?: string; transport?: string; }`\n\n### Example\n\n```typescript\nimport Retell from 'retell-sdk';\n\nconst client = new Retell();\n\nconst phoneNumberResponse = await client.phoneNumber.import({ phone_number: '+14157774444', termination_uri: 'someuri.pstn.twilio.com' });\n\nconsole.log(phoneNumberResponse);\n```",
530
+ markdown: "## import\n\n`client.phoneNumber.import(phone_number: string, termination_uri: string, allowed_inbound_country_list?: string[], allowed_outbound_country_list?: string[], ignore_e164_validation?: boolean, inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], inbound_webhook_url?: string, nickname?: string, outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], sip_trunk_auth_password?: string, sip_trunk_auth_username?: string, transport?: string): { last_modification_timestamp: number; phone_number: string; phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'; allowed_inbound_country_list?: string[]; allowed_outbound_country_list?: string[]; area_code?: number; fallback_number?: string; inbound_agents?: object[]; inbound_sms_agents?: object[]; inbound_sms_webhook_url?: string; inbound_webhook_url?: string; nickname?: string; outbound_agents?: object[]; outbound_sms_agents?: object[]; phone_number_pretty?: string; sip_outbound_trunk_config?: object; }`\n\n**post** `/import-phone-number`\n\nImport a phone number from custom telephony & Bind agents\n\n### Parameters\n\n- `phone_number: string`\n The number you are trying to import in E.164 format of the number (+country code, then number with no space, no special characters), used as the unique identifier for phone number APIs.\n\n- `termination_uri: string`\n The termination uri to uniquely identify your elastic SIP trunk. This is used for outbound calls. For Twilio elastic SIP trunks it always end with \".pstn.twilio.com\".\n\n- `allowed_inbound_country_list?: string[]`\n List of ISO 3166-1 alpha-2 country codes from which inbound calls are allowed. If not set or empty, calls from all countries are allowed.\n\n- `allowed_outbound_country_list?: string[]`\n List of ISO 3166-1 alpha-2 country codes to which outbound calls are allowed. If not set or empty, calls to all countries are allowed.\n\n- `ignore_e164_validation?: boolean`\n If true, E.164 validation for phone_number is skipped. This is useful for internal pseudo numbers when using custom telephony. If omitted, default is true. Must be a boolean literal; string values like \"true\" or \"false\" are invalid.\n\n- `inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Inbound agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each inbound call, with probability proportional to the weight. Total weights must add up to 1.\n\n- `inbound_webhook_url?: string`\n If set, will send a webhook for inbound calls, where you can override agent id, set dynamic variables and other fields specific to that call.\n\n- `nickname?: string`\n Nickname of the number. This is for your reference only.\n\n- `outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Outbound agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each outbound call, with probability proportional to the weight. Total weights must add up to 1.\n\n- `sip_trunk_auth_password?: string`\n The password used for authentication for the SIP trunk.\n\n- `sip_trunk_auth_username?: string`\n The username used for authentication for the SIP trunk.\n\n- `transport?: string`\n Outbound transport protocol to update for the phone number. Valid values are \"TLS\", \"TCP\" and \"UDP\". Default is \"TCP\".\n\n### Returns\n\n- `{ last_modification_timestamp: number; phone_number: string; phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'; allowed_inbound_country_list?: string[]; allowed_outbound_country_list?: string[]; area_code?: number; fallback_number?: string; inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_webhook_url?: string; inbound_webhook_url?: string; nickname?: string; outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; phone_number_pretty?: string; sip_outbound_trunk_config?: { auth_username?: string; termination_uri?: string; transport?: string; }; }`\n\n - `last_modification_timestamp: number`\n - `phone_number: string`\n - `phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'`\n - `allowed_inbound_country_list?: string[]`\n - `allowed_outbound_country_list?: string[]`\n - `area_code?: number`\n - `fallback_number?: string`\n - `inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `inbound_sms_webhook_url?: string`\n - `inbound_webhook_url?: string`\n - `nickname?: string`\n - `outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `phone_number_pretty?: string`\n - `sip_outbound_trunk_config?: { auth_username?: string; termination_uri?: string; transport?: string; }`\n\n### Example\n\n```typescript\nimport Retell from 'retell-sdk';\n\nconst client = new Retell();\n\nconst phoneNumberResponse = await client.phoneNumber.import({ phone_number: '+14157774444', termination_uri: 'someuri.pstn.twilio.com' });\n\nconsole.log(phoneNumberResponse);\n```",
531
531
  perLanguage: {
532
532
  typescript: {
533
533
  method: 'client.phoneNumber.import',
534
534
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst phoneNumberResponse = await client.phoneNumber.import({\n phone_number: '+14157774444',\n termination_uri: 'someuri.pstn.twilio.com',\n});\n\nconsole.log(phoneNumberResponse.last_modification_timestamp);",
535
535
  },
536
+ http: {
537
+ example: 'curl https://api.retellai.com/import-phone-number \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "phone_number": "+14157774444",\n "termination_uri": "someuri.pstn.twilio.com",\n "allowed_inbound_country_list": [\n "US",\n "CA",\n "GB"\n ],\n "allowed_outbound_country_list": [\n "US",\n "CA"\n ],\n "ignore_e164_validation": true,\n "inbound_webhook_url": "https://example.com/inbound-webhook",\n "nickname": "Frontdesk Number",\n "sip_trunk_auth_password": "123456",\n "sip_trunk_auth_username": "username",\n "transport": "TCP"\n }\'',
538
+ },
536
539
  python: {
537
540
  method: 'phone_number.import_',
538
541
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nphone_number_response = client.phone_number.import_(\n phone_number="+14157774444",\n termination_uri="someuri.pstn.twilio.com",\n)\nprint(phone_number_response.last_modification_timestamp)',
539
542
  },
540
- http: {
541
- example: 'curl https://api.retellai.com/import-phone-number \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "phone_number": "+14157774444",\n "termination_uri": "someuri.pstn.twilio.com",\n "allowed_inbound_country_list": [\n "US",\n "CA",\n "GB"\n ],\n "allowed_outbound_country_list": [\n "US",\n "CA"\n ],\n "ignore_e164_validation": true,\n "inbound_webhook_url": "https://example.com/inbound-webhook",\n "nickname": "Frontdesk Number",\n "sip_trunk_auth_password": "123456",\n "sip_trunk_auth_username": "username",\n "transport": "TCP"\n }\'',
542
- },
543
543
  },
544
544
  },
545
545
  {
@@ -558,13 +558,13 @@ const EMBEDDED_METHODS = [
558
558
  method: 'client.phoneNumber.retrieve',
559
559
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst phoneNumberResponse = await client.phoneNumber.retrieve('+14157774444');\n\nconsole.log(phoneNumberResponse.last_modification_timestamp);",
560
560
  },
561
+ http: {
562
+ example: 'curl https://api.retellai.com/get-phone-number/$PHONE_NUMBER \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
563
+ },
561
564
  python: {
562
565
  method: 'phone_number.retrieve',
563
566
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nphone_number_response = client.phone_number.retrieve(\n "+14157774444",\n)\nprint(phone_number_response.last_modification_timestamp)',
564
567
  },
565
- http: {
566
- example: 'curl https://api.retellai.com/get-phone-number/$PHONE_NUMBER \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
567
- },
568
568
  },
569
569
  },
570
570
  {
@@ -583,13 +583,13 @@ const EMBEDDED_METHODS = [
583
583
  method: 'client.phoneNumber.list',
584
584
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst phoneNumbers = await client.phoneNumber.list();\n\nconsole.log(phoneNumbers.has_more);",
585
585
  },
586
+ http: {
587
+ example: 'curl https://api.retellai.com/v2/list-phone-numbers \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
588
+ },
586
589
  python: {
587
590
  method: 'phone_number.list',
588
591
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nphone_numbers = client.phone_number.list()\nprint(phone_numbers.has_more)',
589
592
  },
590
- http: {
591
- example: 'curl https://api.retellai.com/v2/list-phone-numbers \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
592
- },
593
593
  },
594
594
  },
595
595
  {
@@ -618,19 +618,19 @@ const EMBEDDED_METHODS = [
618
618
  'transport?: string;',
619
619
  ],
620
620
  response: "{ last_modification_timestamp: number; phone_number: string; phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'; allowed_inbound_country_list?: string[]; allowed_outbound_country_list?: string[]; area_code?: number; fallback_number?: string; inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_webhook_url?: string; inbound_webhook_url?: string; nickname?: string; outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; phone_number_pretty?: string; sip_outbound_trunk_config?: { auth_username?: string; termination_uri?: string; transport?: string; }; }",
621
- markdown: "## update\n\n`client.phoneNumber.update(phone_number: string, allowed_inbound_country_list?: string[], allowed_outbound_country_list?: string[], auth_password?: string, auth_username?: string, fallback_number?: string, inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], inbound_sms_webhook_url?: string, inbound_webhook_url?: string, nickname?: string, outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], termination_uri?: string, transport?: string): { last_modification_timestamp: number; phone_number: string; phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'; allowed_inbound_country_list?: string[]; allowed_outbound_country_list?: string[]; area_code?: number; fallback_number?: string; inbound_agents?: object[]; inbound_sms_agents?: object[]; inbound_sms_webhook_url?: string; inbound_webhook_url?: string; nickname?: string; outbound_agents?: object[]; outbound_sms_agents?: object[]; phone_number_pretty?: string; sip_outbound_trunk_config?: object; }`\n\n**patch** `/update-phone-number/{phone_number}`\n\nUpdate agent bound to a purchased phone number\n\n### Parameters\n\n- `phone_number: string`\n\n- `allowed_inbound_country_list?: string[]`\n List of ISO 3166-1 alpha-2 country codes from which inbound calls are allowed. If not set or empty, calls from all countries are allowed.\n\n- `allowed_outbound_country_list?: string[]`\n List of ISO 3166-1 alpha-2 country codes to which outbound calls are allowed. If not set or empty, calls to all countries are allowed.\n\n- `auth_password?: string`\n The password used for authentication for the SIP trunk to update for the phone number.\n\n- `auth_username?: string`\n The username used for authentication for the SIP trunk to update for the phone number.\n\n- `fallback_number?: string`\n Enterprise only. Phone number to transfer inbound calls to when organization is in outage mode or when an inbound call cannot get a concurrency slot before the fallback timeout. Can be either a Retell phone number or an external number. Set to null to remove. Cannot be the same as this phone number, and cannot be a number that already has its own fallback configured (prevents nested forwarding).\n\n- `inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Inbound agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each inbound call, with probability proportional to the weight. Total weights must add up to 1.\n\n- `inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Inbound SMS agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each inbound SMS, with probability proportional to the weight. Total weights must add up to 1. If not set or empty, fallback to inbound_sms_agent_id.\n\n- `inbound_sms_webhook_url?: string`\n If set, will send a webhook for inbound SMS, where you can override agent id, set dynamic variables and other fields specific to that chat.\n\n- `inbound_webhook_url?: string`\n If set, will send a webhook for inbound calls, where you can to override agent id, set dynamic variables and other fields specific to that call.\n\n- `nickname?: string`\n Nickname of the number. This is for your reference only.\n\n- `outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Outbound agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each outbound call, with probability proportional to the weight. Total weights must add up to 1.\n\n- `outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Outbound SMS agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each outbound SMS, with probability proportional to the weight. Total weights must add up to 1. If not set or empty, fallback to outbound_sms_agent_id.\n\n- `termination_uri?: string`\n The termination uri to update for the phone number. This is used for outbound calls.\n\n- `transport?: string`\n Outbound transport protocol to update for the phone number. Valid values are \"TLS\", \"TCP\" and \"UDP\". Default is \"TCP\".\n\n### Returns\n\n- `{ last_modification_timestamp: number; phone_number: string; phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'; allowed_inbound_country_list?: string[]; allowed_outbound_country_list?: string[]; area_code?: number; fallback_number?: string; inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_webhook_url?: string; inbound_webhook_url?: string; nickname?: string; outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; phone_number_pretty?: string; sip_outbound_trunk_config?: { auth_username?: string; termination_uri?: string; transport?: string; }; }`\n\n - `last_modification_timestamp: number`\n - `phone_number: string`\n - `phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'`\n - `allowed_inbound_country_list?: string[]`\n - `allowed_outbound_country_list?: string[]`\n - `area_code?: number`\n - `fallback_number?: string`\n - `inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `inbound_sms_webhook_url?: string`\n - `inbound_webhook_url?: string`\n - `nickname?: string`\n - `outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `phone_number_pretty?: string`\n - `sip_outbound_trunk_config?: { auth_username?: string; termination_uri?: string; transport?: string; }`\n\n### Example\n\n```typescript\nimport Retell from 'retell-sdk';\n\nconst client = new Retell();\n\nconst phoneNumberResponse = await client.phoneNumber.update('+14157774444');\n\nconsole.log(phoneNumberResponse);\n```",
621
+ markdown: "## update\n\n`client.phoneNumber.update(phone_number: string, allowed_inbound_country_list?: string[], allowed_outbound_country_list?: string[], auth_password?: string, auth_username?: string, fallback_number?: string, inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], inbound_sms_webhook_url?: string, inbound_webhook_url?: string, nickname?: string, outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[], termination_uri?: string, transport?: string): { last_modification_timestamp: number; phone_number: string; phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'; allowed_inbound_country_list?: string[]; allowed_outbound_country_list?: string[]; area_code?: number; fallback_number?: string; inbound_agents?: object[]; inbound_sms_agents?: object[]; inbound_sms_webhook_url?: string; inbound_webhook_url?: string; nickname?: string; outbound_agents?: object[]; outbound_sms_agents?: object[]; phone_number_pretty?: string; sip_outbound_trunk_config?: object; }`\n\n**patch** `/update-phone-number/{phone_number}`\n\nUpdate agent bound to a purchased phone number\n\n### Parameters\n\n- `phone_number: string`\n\n- `allowed_inbound_country_list?: string[]`\n List of ISO 3166-1 alpha-2 country codes from which inbound calls are allowed. If not set or empty, calls from all countries are allowed.\n\n- `allowed_outbound_country_list?: string[]`\n List of ISO 3166-1 alpha-2 country codes to which outbound calls are allowed. If not set or empty, calls to all countries are allowed.\n\n- `auth_password?: string`\n The password used for authentication for the SIP trunk to update for the phone number.\n\n- `auth_username?: string`\n The username used for authentication for the SIP trunk to update for the phone number.\n\n- `fallback_number?: string`\n Enterprise only. Phone number to transfer inbound calls to when organization is in outage mode or when an inbound call cannot get a concurrency slot before the fallback timeout. Can be either a Retell phone number or an external number. Set to null to remove. Cannot be the same as this phone number, and cannot be a number that already has its own fallback configured (prevents nested forwarding).\n\n- `inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Inbound agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each inbound call, with probability proportional to the weight. Total weights must add up to 1.\n\n- `inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Inbound SMS agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each inbound SMS, with probability proportional to the weight. Total weights must add up to 1. If not set or empty, fallback to inbound_sms_agent_id.\n\n- `inbound_sms_webhook_url?: string`\n If set, will send a webhook for inbound SMS, where you can override agent id, set dynamic variables and other fields specific to that chat.\n\n- `inbound_webhook_url?: string`\n If set, will send a webhook for inbound calls, where you can override agent id, set dynamic variables and other fields specific to that call.\n\n- `nickname?: string`\n Nickname of the number. This is for your reference only.\n\n- `outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Outbound agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each outbound call, with probability proportional to the weight. Total weights must add up to 1.\n\n- `outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n Outbound SMS agents to bind to the number with weights. If set and non-empty, one agent will be picked randomly for each outbound SMS, with probability proportional to the weight. Total weights must add up to 1. If not set or empty, fallback to outbound_sms_agent_id.\n\n- `termination_uri?: string`\n The termination uri to update for the phone number. This is used for outbound calls.\n\n- `transport?: string`\n Outbound transport protocol to update for the phone number. Valid values are \"TLS\", \"TCP\" and \"UDP\". Default is \"TCP\".\n\n### Returns\n\n- `{ last_modification_timestamp: number; phone_number: string; phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'; allowed_inbound_country_list?: string[]; allowed_outbound_country_list?: string[]; area_code?: number; fallback_number?: string; inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; inbound_sms_webhook_url?: string; inbound_webhook_url?: string; nickname?: string; outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]; phone_number_pretty?: string; sip_outbound_trunk_config?: { auth_username?: string; termination_uri?: string; transport?: string; }; }`\n\n - `last_modification_timestamp: number`\n - `phone_number: string`\n - `phone_number_type: 'retell-twilio' | 'retell-telnyx' | 'custom'`\n - `allowed_inbound_country_list?: string[]`\n - `allowed_outbound_country_list?: string[]`\n - `area_code?: number`\n - `fallback_number?: string`\n - `inbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `inbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `inbound_sms_webhook_url?: string`\n - `inbound_webhook_url?: string`\n - `nickname?: string`\n - `outbound_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `outbound_sms_agents?: { agent_id: string; weight: number; agent_version?: number | string; }[]`\n - `phone_number_pretty?: string`\n - `sip_outbound_trunk_config?: { auth_username?: string; termination_uri?: string; transport?: string; }`\n\n### Example\n\n```typescript\nimport Retell from 'retell-sdk';\n\nconst client = new Retell();\n\nconst phoneNumberResponse = await client.phoneNumber.update('+14157774444');\n\nconsole.log(phoneNumberResponse);\n```",
622
622
  perLanguage: {
623
623
  typescript: {
624
624
  method: 'client.phoneNumber.update',
625
625
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst phoneNumberResponse = await client.phoneNumber.update('+14157774444', {\n inbound_agents: [\n {\n agent_id: 'oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD',\n agent_version: 1,\n weight: 1,\n },\n ],\n nickname: 'Frontdesk Number',\n outbound_agents: [\n {\n agent_id: 'oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD',\n agent_version: 1,\n weight: 1,\n },\n ],\n});\n\nconsole.log(phoneNumberResponse.last_modification_timestamp);",
626
626
  },
627
+ http: {
628
+ example: 'curl https://api.retellai.com/update-phone-number/$PHONE_NUMBER \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "allowed_inbound_country_list": [\n "US",\n "CA",\n "GB"\n ],\n "allowed_outbound_country_list": [\n "US",\n "CA"\n ],\n "auth_password": "123456",\n "auth_username": "username",\n "fallback_number": "+14155551234",\n "inbound_agents": [\n {\n "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "weight": 1,\n "agent_version": 1\n }\n ],\n "inbound_sms_webhook_url": "https://example.com/inbound-sms-webhook",\n "inbound_webhook_url": "https://example.com/inbound-webhook",\n "nickname": "Frontdesk Number",\n "outbound_agents": [\n {\n "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "weight": 1,\n "agent_version": 1\n }\n ],\n "termination_uri": "someuri.pstn.twilio.com",\n "transport": "TCP"\n }\'',
629
+ },
627
630
  python: {
628
631
  method: 'phone_number.update',
629
632
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nphone_number_response = client.phone_number.update(\n phone_number="+14157774444",\n inbound_agents=[{\n "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "agent_version": 1,\n "weight": 1,\n }],\n nickname="Frontdesk Number",\n outbound_agents=[{\n "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "agent_version": 1,\n "weight": 1,\n }],\n)\nprint(phone_number_response.last_modification_timestamp)',
630
633
  },
631
- http: {
632
- example: 'curl https://api.retellai.com/update-phone-number/$PHONE_NUMBER \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "allowed_inbound_country_list": [\n "US",\n "CA",\n "GB"\n ],\n "allowed_outbound_country_list": [\n "US",\n "CA"\n ],\n "auth_password": "123456",\n "auth_username": "username",\n "fallback_number": "+14155551234",\n "inbound_agents": [\n {\n "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "weight": 1,\n "agent_version": 1\n }\n ],\n "inbound_sms_webhook_url": "https://example.com/inbound-sms-webhook",\n "inbound_webhook_url": "https://example.com/inbound-webhook",\n "nickname": "Frontdesk Number",\n "outbound_agents": [\n {\n "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n "weight": 1,\n "agent_version": 1\n }\n ],\n "termination_uri": "someuri.pstn.twilio.com",\n "transport": "TCP"\n }\'',
633
- },
634
634
  },
635
635
  },
636
636
  {
@@ -648,13 +648,13 @@ const EMBEDDED_METHODS = [
648
648
  method: 'client.phoneNumber.delete',
649
649
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.phoneNumber.delete('+14157774444');",
650
650
  },
651
+ http: {
652
+ example: 'curl https://api.retellai.com/delete-phone-number/$PHONE_NUMBER \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
653
+ },
651
654
  python: {
652
655
  method: 'phone_number.delete',
653
656
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.phone_number.delete(\n "+14157774444",\n)',
654
657
  },
655
- http: {
656
- example: 'curl https://api.retellai.com/delete-phone-number/$PHONE_NUMBER \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
657
- },
658
658
  },
659
659
  },
660
660
  {
@@ -724,19 +724,19 @@ const EMBEDDED_METHODS = [
724
724
  'webhook_url?: string;',
725
725
  ],
726
726
  response: 'object',
727
- markdown: "## create\n\n`client.agent.create(response_engine: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }, voice_id: string, agent_name?: string, allow_dtmf_interruption?: boolean, allow_user_dtmf?: boolean, ambient_sound?: string, ambient_sound_volume?: number, analysis_successful_prompt?: string, analysis_summary_prompt?: string, analysis_user_sentiment_prompt?: string, backchannel_frequency?: number, backchannel_words?: string[], begin_message_delay_ms?: number, boosted_keywords?: string[], call_screening_option?: { agent_identity: string; call_purpose: string; }, custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }, data_storage_retention_days?: number, data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only', denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation', enable_backchannel?: boolean, enable_dynamic_responsiveness?: boolean, enable_dynamic_voice_speed?: boolean, end_call_after_silence_ms?: number, fallback_voice_ids?: string[], guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }, handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }, interruption_sensitivity?: number, ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }, language?: string | string[], max_call_duration_ms?: number, opt_in_signed_url?: boolean, pii_config?: { categories: string[]; mode: 'post_call'; }, post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[], post_call_analysis_model?: string, pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[], reminder_max_count?: number, reminder_trigger_ms?: number, responsiveness?: number, ring_duration_ms?: number, signed_url_expiration_ms?: number, stt_mode?: 'fast' | 'accurate' | 'custom', timezone?: string, user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }, version_description?: string, vocab_specialization?: 'general' | 'medical', voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised', voice_model?: string, voice_speed?: number, voice_temperature?: number, voicemail_detection_timeout_ms?: number, voicemail_message?: string, voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }, volume?: number, webhook_events?: string[], webhook_timeout_ms?: number, webhook_url?: string): { agent_id: string; last_modification_timestamp: number; response_engine: object | object | object; version: number; voice_id: string; agent_name?: string; allow_dtmf_interruption?: boolean; allow_user_dtmf?: boolean; ambient_sound?: string; ambient_sound_volume?: number; analysis_successful_prompt?: string; analysis_summary_prompt?: string; analysis_user_sentiment_prompt?: string; assigned_tags?: string[]; backchannel_frequency?: number; backchannel_words?: string[]; base_version?: number; begin_message_delay_ms?: number; boosted_keywords?: string[]; call_screening_option?: object; custom_stt_config?: object; data_storage_retention_days?: number; data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'; denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'; enable_backchannel?: boolean; enable_dynamic_responsiveness?: boolean; enable_dynamic_voice_speed?: boolean; end_call_after_silence_ms?: number; fallback_voice_ids?: string[]; guardrail_config?: object; handbook_config?: object; interruption_sensitivity?: number; is_published?: boolean; ivr_option?: object; language?: string | string[]; max_call_duration_ms?: number; opt_in_signed_url?: boolean; pii_config?: object; post_call_analysis_data?: object | object | object | object | object[]; post_call_analysis_model?: string; pronunciation_dictionary?: object[]; reminder_max_count?: number; reminder_trigger_ms?: number; responsiveness?: number; ring_duration_ms?: number; signed_url_expiration_ms?: number; stt_mode?: 'fast' | 'accurate' | 'custom'; timezone?: string; user_dtmf_options?: object; version_description?: string; vocab_specialization?: 'general' | 'medical'; voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'; voice_model?: string; voice_speed?: number; voice_temperature?: number; voicemail_detection_timeout_ms?: number; voicemail_message?: string; voicemail_option?: object; volume?: number; webhook_events?: string[]; webhook_timeout_ms?: number; webhook_url?: string; }`\n\n**post** `/create-agent`\n\nCreate a new agent\n\n### Parameters\n\n- `response_engine: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }`\n The Response Engine to attach to the agent. It is used to generate responses for the agent. You need to create a Response Engine first before attaching it to an agent.\n\n- `voice_id: string`\n Unique voice id used for the agent. Find list of available voices and their preview in Dashboard.\n\n- `agent_name?: string`\n The name of the agent. Only used for your own reference.\n\n- `allow_dtmf_interruption?: boolean`\n If set to true, DTMF input will interrupt the agent even when interruption_sensitivity is 0. Can be overridden per conversation or subagent node. Default to false.\n\n- `allow_user_dtmf?: boolean`\n If set to true, DTMF input will be accepted and processed. If false, any DTMF input will be ignored. Default to true.\n\n- `ambient_sound?: string`\n If set, will add ambient environment sound to the call to make experience more realistic. Currently supports the following options:\n\n- `coffee-shop`: Coffee shop ambience with people chatting in background. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/coffee-shop.wav)\n- `convention-hall`: Convention hall ambience, with some echo and people chatting in background. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/convention-hall.wav)\n- `summer-outdoor`: Summer outdoor ambience with cicada chirping. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/summer-outdoor.wav)\n- `mountain-outdoor`: Mountain outdoor ambience with birds singing. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/mountain-outdoor.wav)\n- `static-noise`: Constant static noise. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/static-noise.wav)\n- `call-center`: Call center work noise. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/call-center.wav)\nSet to `null` to remove ambient sound from this agent.\n\n- `ambient_sound_volume?: number`\n If set, will control the volume of the ambient sound. Value ranging from [0,2]. Lower value means quieter ambient sound, while higher value means louder ambient sound. If unset, default value 1 will apply.\n\n- `analysis_successful_prompt?: string`\n Prompt to determine whether the post call or chat analysis should mark the interaction as successful. Set to null to use the default prompt.\n\n- `analysis_summary_prompt?: string`\n Prompt to guide how the post call or chat analysis summary should be generated. When unset, the default system prompt is used. Set to null to use the default prompt.\n\n- `analysis_user_sentiment_prompt?: string`\n Prompt to guide how the post call or chat analysis should evaluate user sentiment. When unset, the default system prompt is used. Set to null to use the default prompt.\n\n- `backchannel_frequency?: number`\n Only applicable when enable_backchannel is true. Controls how often the agent would backchannel when a backchannel is possible. Value ranging from [0,1]. Lower value means less frequent backchannel, while higher value means more frequent backchannel. If unset, default value 0.8 will apply.\n\n- `backchannel_words?: string[]`\n Only applicable when enable_backchannel is true. A list of words that the agent would use as backchannel. If not set, default backchannel words will apply. Check out [backchannel default words](/agent/interaction-configuration#backchannel) for more details. Note that certain voices do not work too well with certain words, so it's recommended to experiment before adding any words.\n\n- `begin_message_delay_ms?: number`\n If set, will delay the first message by the specified amount of milliseconds, so that it gives user more time to prepare to take the call. Valid range is [0, 5000]. If not set or set to 0, agent will speak immediately. Only applicable when agent speaks first.\n\n- `boosted_keywords?: string[]`\n Provide a customized list of keywords to bias the transcriber model, so that these words are more likely to get transcribed. Commonly used for names, brands, street, etc. Entries may reference dynamic variables with `{{variable}}` syntax.\n\n- `call_screening_option?: { agent_identity: string; call_purpose: string; }`\n If this option is set, the agent prompt will include call screen handling instructions for identity and call purpose questions. Set this to null to disable call screen prompt instructions.\n - `agent_identity: string`\n Identity the agent should provide when a call screen asks who is calling. Dynamic variables are supported.\n - `call_purpose: string`\n Purpose the agent should provide when a call screen asks why it is calling. Dynamic variables are supported.\n\n- `custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }`\n Custom STT configuration. Only used when stt_mode is set to custom.\n - `endpointing_ms: number`\n Endpointing timeout in milliseconds. Minimum is 100 for Azure, 10 for Deepgram, 500 for Soniox\n - `provider: 'azure' | 'deepgram' | 'soniox'`\n ASR provider name.\n\n- `data_storage_retention_days?: number`\n Number of days to retain call/chat data before automatic deletion. Must be between 1 and 730 days. If not set, data is retained forever (no automatic deletion).\n\n- `data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'`\n Granular setting to manage how Retell stores sensitive data (transcripts, recordings, logs, etc.).\nThis replaces the deprecated `opt_out_sensitive_data_storage` field.\n- `everything`: Store all data including transcripts, recordings, and logs.\n- `everything_except_pii`: Store data without PII when PII is detected.\n- `basic_attributes_only`: Store only basic attributes; no transcripts/recordings/logs.\nIf not set, default value of \"everything\" will apply.\n\n- `denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'`\n If set, determines what denoising mode to use. Use \"no-denoise\" to bypass all audio denoising. Default to noise-cancellation.\n\n- `enable_backchannel?: boolean`\n Controls whether the agent would backchannel (agent interjects the speaker with phrases like \"yeah\", \"uh-huh\" to signify interest and engagement). Backchannel when enabled tends to show up more in longer user utterances. If not set, agent will not backchannel.\n\n- `enable_dynamic_responsiveness?: boolean`\n If set to true, the agent will dynamically adjust how quickly it responds based on the user's speech rate and past turn-taking behavior in the call. If unset, default value false will apply.\n\n- `enable_dynamic_voice_speed?: boolean`\n If set to true, will enable dynamic voice speed adjustment based on the user's speech rate and conversation context. If unset, default value false will apply.\n\n- `end_call_after_silence_ms?: number`\n If users stay silent for a period after agent speech, end the call. The minimum value allowed is 10,000 ms (10 s). By default, this is set to 600000 (10 min).\n\n- `fallback_voice_ids?: string[]`\n When TTS provider for the selected voice is experiencing outages, we would use fallback voices listed here for the agent. Voice id and the fallback voice ids must be from different TTS providers. The system would go through the list in order, if the first one in the list is also having outage, it would use the next one. Set to null to remove voice fallback for the agent.\n\n- `guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }`\n Configuration for guardrail checks to detect and prevent prohibited topics in agent output and user input.\n - `input_topics?: 'platform_integrity_jailbreaking'[]`\n Selected prohibited user topic categories to check. When user messages contain these topics, the agent will respond with a placeholder message instead of processing the request.\n - `output_topics?: string[]`\n Selected prohibited agent topic categories to check. When agent messages contain these topics, they will be replaced with a placeholder message.\n\n- `handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }`\n Toggle behavior presets on/off to influence agent response style and behaviors.\n - `ai_disclosure?: boolean`\n When asked, acknowledge being a virtual assistant.\n - `default_personality?: boolean`\n Professional call center rep baseline.\n - `echo_verification?: boolean`\n Repeat back and confirm important details (voice only).\n - `high_empathy?: boolean`\n Warm acknowledgment of caller concerns.\n - `nato_phonetic_alphabet?: boolean`\n Spell using NATO phonetic alphabet style (voice only).\n - `natural_filler_words?: boolean`\n Sprinkle natural speech fillers like \"um\", \"you know\" for a more human, conversational tone.\n - `scope_boundaries?: boolean`\n Stay within prompt/context scope, don't invent details.\n - `smart_matching?: boolean`\n Treat near-match similar words as same entity to reduce impact of transcription error (voice only).\n - `speech_normalization?: boolean`\n Convert numbers/dates/currency to spoken forms (voice only).\n\n- `interruption_sensitivity?: number`\n Controls how sensitive the agent is to user interruptions. Value ranging from [0,1]. Lower value means it will take longer / more words for user to interrupt agent, while higher value means it's easier for user to interrupt agent. If unset, default value 1 will apply. When this is set to 0, agent would never be interrupted.\n\n- `ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }`\n If this option is set, the call will try to detect IVR in the first 3 minutes of the call. Actions defined will be applied when the IVR is detected. Set this to null to disable IVR detection.\n - `action: { type: 'hangup'; }`\n - `detection_prompt?: string`\n Optionally describe what should be treated as an IVR. Leave as null to use the default definition.\n\n- `language?: string | string[]`\n Specifies what language(s) the agent will operate in. Accepts either a single scalar locale (e.g. `en-US`), the legacy scalar value `multi` for multilingual support, or an array of concrete locale codes for explicit multi-locale selection (e.g. `[\"en-US\",\"es-ES\"]`). The array form must contain concrete locale codes only — the `multi` value is valid only as the scalar legacy form and must not appear inside an array. Single-element arrays are normalized to the equivalent scalar on output. If unset, defaults to `en-US`.\n\n- `max_call_duration_ms?: number`\n Maximum allowed length for the call, will force end the call if reached. The minimum value allowed is 60,000 ms (1 min), and maximum value allowed is 7,200,000 (2 hours). By default, this is set to 3,600,000 (1 hour).\n\n- `opt_in_signed_url?: boolean`\n Whether this agent opts in for signed URLs for public logs and recordings. When enabled, the generated URLs will include security signatures that restrict access and automatically expire after 24 hours.\n\n- `pii_config?: { categories: string[]; mode: 'post_call'; }`\n Configuration for PII scrubbing from transcripts and recordings.\n - `categories: string[]`\n List of PII categories to scrub from transcripts and recordings. PII redaction is only active when this list is non-empty; an empty array means no PII scrubbing is performed.\n - `mode: 'post_call'`\n The processing mode for PII scrubbing. Currently only post-call is supported.\n\n- `post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[]`\n Post call analysis data to extract from the call. This data will augment the pre-defined variables extracted in the call analysis. This will be available after the call ends.\n\n- `post_call_analysis_model?: string`\n The model to use for post call analysis. Default to gpt-4.1.\n\n- `pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[]`\n A list of words / phrases and their pronunciation to be used to guide the audio synthesize for consistent pronunciation. Check the dashboard to see what provider supports this feature. Set to null to remove pronunciation dictionary from this agent.\n\n- `reminder_max_count?: number`\n If set, controls how many times agent would remind user when user is unresponsive. Must be a non negative integer. If unset, default value of 1 will apply (remind once). Set to 0 to disable agent from reminding.\n\n- `reminder_trigger_ms?: number`\n If set (in milliseconds), will trigger a reminder to the agent to speak if the user has been silent for the specified duration after some agent speech. Must be a positive number. If unset, default value of 10000 ms (10 s) will apply.\n\n- `responsiveness?: number`\n Controls how responsive is the agent. Value ranging from [0,1]. Lower value means less responsive agent (wait more, respond slower), while higher value means faster exchanges (respond when it can). If unset, default value 1 will apply.\n\n- `ring_duration_ms?: number`\n If set, the phone ringing will last for the specified amount of milliseconds. This applies for both outbound call ringtime, and call transfer ringtime. Default to 30000 (30 s). Valid range is [5000, 300000].\n\n- `signed_url_expiration_ms?: number`\n The expiration time for the signed url in milliseconds. Only applicable when opt_in_signed_url is true. If not set, default value of 86400000 (24 hours) will apply.\n\n- `stt_mode?: 'fast' | 'accurate' | 'custom'`\n If set, determines whether speech to text should focus on latency or accuracy. Default to fast mode. When set to custom, custom_stt_config must be provided.\n\n- `timezone?: string`\n IANA timezone for the agent (e.g. America/New_York). Defaults to America/Los_Angeles if not set.\n\n- `user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }`\n - `digit_limit?: number`\n The maximum number of digits allowed in the user's DTMF (Dual-Tone Multi-Frequency) input per turn. Once this limit is reached, the input is considered complete and a response will be generated immediately.\n - `termination_key?: string`\n A single key that signals the end of DTMF input. Acceptable values include any digit (0-9), the pound/hash symbol (#), or the asterisk (*).\n - `timeout_ms?: number`\n The time (in milliseconds) to wait for user DTMF input before timing out. The timer resets with each digit received.\n\n- `version_description?: string`\n Optional description of the agent version. Used for your own reference and documentation.\n\n- `vocab_specialization?: 'general' | 'medical'`\n If set, determines the vocabulary set to use for transcription. This setting only applies for English agents, for non English agent, this setting is a no-op. Default to general.\n\n- `voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'`\n Controls the emotional tone of the agent's voice. Currently supported for Cartesia and Minimax TTS providers. If unset, no emotion will be used.\n\n- `voice_model?: string`\n Select the voice model used for the selected voice. Each provider has a set of available voice models. Set to null to remove voice model selection, and default ones will apply. Check out dashboard for more details of each voice model.\n\n- `voice_speed?: number`\n Controls speed of voice. Value ranging from [0.5,2]. Lower value means slower speech, while higher value means faster speech rate. If unset, default value 1 will apply.\n\n- `voice_temperature?: number`\n Controls how stable the voice is. Value ranging from [0,2]. Lower value means more stable, and higher value means more variant speech generation. Check the dashboard to see what provider supports this feature. If unset, default value 1 will apply.\n\n- `voicemail_detection_timeout_ms?: number`\n Configures when to stop running voicemail detection, as it becomes unlikely to hit voicemail after a couple minutes, and keep running it will only have negative impact. The minimum value allowed is 5,000 ms (5 s), and maximum value allowed is 180,000 (3 minutes). By default, this is set to 30,000 (30 s).\n\n- `voicemail_message?: string`\n The message to be played when the call enters a voicemail. Note that this feature is only available for phone calls. If you want to hangup after hitting voicemail, set this to empty string.\n\n- `voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }`\n If this option is set, the call will try to detect voicemail in the first 3 minutes of the call. Actions defined (hangup, or leave a message) will be applied when the voicemail is detected. Set this to null to disable voicemail detection.\n - `action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }`\n - `detection_prompt?: string`\n Optionally describe what should be treated as voicemail. Leave as null to use the default definition.\n\n- `volume?: number`\n If set, will control the volume of the agent. Value ranging from [0,2]. Lower value means quieter agent speech, while higher value means louder agent speech. If unset, default value 1 will apply.\n\n- `webhook_events?: string[]`\n Which webhook events this agent should receive. If not set, defaults to call_started, call_ended, call_analyzed.\n\n- `webhook_timeout_ms?: number`\n The timeout for the webhook in milliseconds. If not set, default value of 10000 will apply.\n\n- `webhook_url?: string`\n The webhook for agent to listen to call events. See what events it would get at [webhook doc](/features/webhook). If set, will binds webhook events for this agent to the specified url, and will ignore the account level webhook for this agent. Set to `null` to remove webhook url from this agent.\n\n### Returns\n\n- `{ agent_id: string; last_modification_timestamp: number; response_engine: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }; version: number; voice_id: string; agent_name?: string; allow_dtmf_interruption?: boolean; allow_user_dtmf?: boolean; ambient_sound?: string; ambient_sound_volume?: number; analysis_successful_prompt?: string; analysis_summary_prompt?: string; analysis_user_sentiment_prompt?: string; assigned_tags?: string[]; backchannel_frequency?: number; backchannel_words?: string[]; base_version?: number; begin_message_delay_ms?: number; boosted_keywords?: string[]; call_screening_option?: { agent_identity: string; call_purpose: string; }; custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }; data_storage_retention_days?: number; data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'; denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'; enable_backchannel?: boolean; enable_dynamic_responsiveness?: boolean; enable_dynamic_voice_speed?: boolean; end_call_after_silence_ms?: number; fallback_voice_ids?: string[]; guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }; handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }; interruption_sensitivity?: number; is_published?: boolean; ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }; language?: string | string[]; max_call_duration_ms?: number; opt_in_signed_url?: boolean; pii_config?: { categories: string[]; mode: 'post_call'; }; post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[]; post_call_analysis_model?: string; pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[]; reminder_max_count?: number; reminder_trigger_ms?: number; responsiveness?: number; ring_duration_ms?: number; signed_url_expiration_ms?: number; stt_mode?: 'fast' | 'accurate' | 'custom'; timezone?: string; user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }; version_description?: string; vocab_specialization?: 'general' | 'medical'; voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'; voice_model?: string; voice_speed?: number; voice_temperature?: number; voicemail_detection_timeout_ms?: number; voicemail_message?: string; voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }; volume?: number; webhook_events?: string[]; webhook_timeout_ms?: number; webhook_url?: string; }`\n\n - `agent_id: string`\n - `last_modification_timestamp: number`\n - `response_engine: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }`\n - `version: number`\n - `voice_id: string`\n - `agent_name?: string`\n - `allow_dtmf_interruption?: boolean`\n - `allow_user_dtmf?: boolean`\n - `ambient_sound?: string`\n - `ambient_sound_volume?: number`\n - `analysis_successful_prompt?: string`\n - `analysis_summary_prompt?: string`\n - `analysis_user_sentiment_prompt?: string`\n - `assigned_tags?: string[]`\n - `backchannel_frequency?: number`\n - `backchannel_words?: string[]`\n - `base_version?: number`\n - `begin_message_delay_ms?: number`\n - `boosted_keywords?: string[]`\n - `call_screening_option?: { agent_identity: string; call_purpose: string; }`\n - `custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }`\n - `data_storage_retention_days?: number`\n - `data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'`\n - `denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'`\n - `enable_backchannel?: boolean`\n - `enable_dynamic_responsiveness?: boolean`\n - `enable_dynamic_voice_speed?: boolean`\n - `end_call_after_silence_ms?: number`\n - `fallback_voice_ids?: string[]`\n - `guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }`\n - `handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }`\n - `interruption_sensitivity?: number`\n - `is_published?: boolean`\n - `ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }`\n - `language?: string | string[]`\n - `max_call_duration_ms?: number`\n - `opt_in_signed_url?: boolean`\n - `pii_config?: { categories: string[]; mode: 'post_call'; }`\n - `post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[]`\n - `post_call_analysis_model?: string`\n - `pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[]`\n - `reminder_max_count?: number`\n - `reminder_trigger_ms?: number`\n - `responsiveness?: number`\n - `ring_duration_ms?: number`\n - `signed_url_expiration_ms?: number`\n - `stt_mode?: 'fast' | 'accurate' | 'custom'`\n - `timezone?: string`\n - `user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }`\n - `version_description?: string`\n - `vocab_specialization?: 'general' | 'medical'`\n - `voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'`\n - `voice_model?: string`\n - `voice_speed?: number`\n - `voice_temperature?: number`\n - `voicemail_detection_timeout_ms?: number`\n - `voicemail_message?: string`\n - `voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }`\n - `volume?: number`\n - `webhook_events?: string[]`\n - `webhook_timeout_ms?: number`\n - `webhook_url?: string`\n\n### Example\n\n```typescript\nimport Retell from 'retell-sdk';\n\nconst client = new Retell();\n\nconst agentResponse = await client.agent.create({\n response_engine: { llm_id: 'llm_234sdertfsdsfsdf', type: 'retell-llm' },\n voice_id: 'retell-Cimo',\n});\n\nconsole.log(agentResponse);\n```",
727
+ markdown: "## create\n\n`client.agent.create(response_engine: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }, voice_id: string, agent_name?: string, allow_dtmf_interruption?: boolean, allow_user_dtmf?: boolean, ambient_sound?: string, ambient_sound_volume?: number, analysis_successful_prompt?: string, analysis_summary_prompt?: string, analysis_user_sentiment_prompt?: string, backchannel_frequency?: number, backchannel_words?: string[], begin_message_delay_ms?: number, boosted_keywords?: string[], call_screening_option?: { agent_identity: string; call_purpose: string; }, custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }, data_storage_retention_days?: number, data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only', denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation', enable_backchannel?: boolean, enable_dynamic_responsiveness?: boolean, enable_dynamic_voice_speed?: boolean, end_call_after_silence_ms?: number, fallback_voice_ids?: string[], guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }, handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }, interruption_sensitivity?: number, ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }, language?: string | string[], max_call_duration_ms?: number, opt_in_signed_url?: boolean, pii_config?: { categories: string[]; mode: 'post_call'; }, post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[], post_call_analysis_model?: string, pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[], reminder_max_count?: number, reminder_trigger_ms?: number, responsiveness?: number, ring_duration_ms?: number, signed_url_expiration_ms?: number, stt_mode?: 'fast' | 'accurate' | 'custom', timezone?: string, user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }, version_description?: string, vocab_specialization?: 'general' | 'medical', voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised', voice_model?: string, voice_speed?: number, voice_temperature?: number, voicemail_detection_timeout_ms?: number, voicemail_message?: string, voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }, volume?: number, webhook_events?: string[], webhook_timeout_ms?: number, webhook_url?: string): { agent_id: string; last_modification_timestamp: number; response_engine: object | object | object; version: number; voice_id: string; agent_name?: string; allow_dtmf_interruption?: boolean; allow_user_dtmf?: boolean; ambient_sound?: string; ambient_sound_volume?: number; analysis_successful_prompt?: string; analysis_summary_prompt?: string; analysis_user_sentiment_prompt?: string; assigned_tags?: string[]; backchannel_frequency?: number; backchannel_words?: string[]; base_version?: number; begin_message_delay_ms?: number; boosted_keywords?: string[]; call_screening_option?: object; custom_stt_config?: object; data_storage_retention_days?: number; data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'; denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'; enable_backchannel?: boolean; enable_dynamic_responsiveness?: boolean; enable_dynamic_voice_speed?: boolean; end_call_after_silence_ms?: number; fallback_voice_ids?: string[]; guardrail_config?: object; handbook_config?: object; interruption_sensitivity?: number; is_published?: boolean; ivr_option?: object; language?: string | string[]; max_call_duration_ms?: number; opt_in_signed_url?: boolean; pii_config?: object; post_call_analysis_data?: object | object | object | object | object[]; post_call_analysis_model?: string; pronunciation_dictionary?: object[]; reminder_max_count?: number; reminder_trigger_ms?: number; responsiveness?: number; ring_duration_ms?: number; signed_url_expiration_ms?: number; stt_mode?: 'fast' | 'accurate' | 'custom'; timezone?: string; user_dtmf_options?: object; version_description?: string; vocab_specialization?: 'general' | 'medical'; voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'; voice_model?: string; voice_speed?: number; voice_temperature?: number; voicemail_detection_timeout_ms?: number; voicemail_message?: string; voicemail_option?: object; volume?: number; webhook_events?: string[]; webhook_timeout_ms?: number; webhook_url?: string; }`\n\n**post** `/create-agent`\n\nCreate a new agent\n\n### Parameters\n\n- `response_engine: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }`\n The Response Engine to attach to the agent. It is used to generate responses for the agent. You need to create a Response Engine first before attaching it to an agent.\n\n- `voice_id: string`\n Unique voice id used for the agent. Find list of available voices and their preview in Dashboard.\n\n- `agent_name?: string`\n The name of the agent. Only used for your own reference.\n\n- `allow_dtmf_interruption?: boolean`\n If set to true, DTMF input will interrupt the agent even when interruption_sensitivity is 0. Can be overridden per conversation or subagent node. Default to false.\n\n- `allow_user_dtmf?: boolean`\n If set to true, DTMF input will be accepted and processed. If false, any DTMF input will be ignored. Default to true.\n\n- `ambient_sound?: string`\n If set, will add ambient environment sound to the call to make experience more realistic. Currently supports the following options:\n\n- `coffee-shop`: Coffee shop ambience with people chatting in background. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/coffee-shop.wav)\n- `convention-hall`: Convention hall ambience, with some echo and people chatting in background. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/convention-hall.wav)\n- `summer-outdoor`: Summer outdoor ambience with cicada chirping. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/summer-outdoor.wav)\n- `mountain-outdoor`: Mountain outdoor ambience with birds singing. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/mountain-outdoor.wav)\n- `static-noise`: Constant static noise. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/static-noise.wav)\n- `call-center`: Call center work noise. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/call-center.wav)\nSet to `null` to remove ambient sound from this agent.\n\n\n- `ambient_sound_volume?: number`\n If set, will control the volume of the ambient sound. Value ranging from [0,2]. Lower value means quieter ambient sound, while higher value means louder ambient sound. If unset, default value 1 will apply.\n\n- `analysis_successful_prompt?: string`\n Prompt to determine whether the post call or chat analysis should mark the interaction as successful. Set to null to use the default prompt.\n\n- `analysis_summary_prompt?: string`\n Prompt to guide how the post call or chat analysis summary should be generated. When unset, the default system prompt is used. Set to null to use the default prompt.\n\n- `analysis_user_sentiment_prompt?: string`\n Prompt to guide how the post call or chat analysis should evaluate user sentiment. When unset, the default system prompt is used. Set to null to use the default prompt.\n\n- `backchannel_frequency?: number`\n Only applicable when enable_backchannel is true. Controls how often the agent would backchannel when a backchannel is possible. Value ranging from [0,1]. Lower value means less frequent backchannel, while higher value means more frequent backchannel. If unset, default value 0.8 will apply.\n\n- `backchannel_words?: string[]`\n Only applicable when enable_backchannel is true. A list of words that the agent would use as backchannel. If not set, default backchannel words will apply. Check out [backchannel default words](/agent/interaction-configuration#backchannel) for more details. Note that certain voices do not work too well with certain words, so it's recommended to experiment before adding any words.\n\n- `begin_message_delay_ms?: number`\n If set, will delay the first message by the specified amount of milliseconds, so that it gives user more time to prepare to take the call. Valid range is [0, 5000]. If not set or set to 0, agent will speak immediately. Only applicable when agent speaks first.\n\n- `boosted_keywords?: string[]`\n Provide a customized list of keywords to bias the transcriber model, so that these words are more likely to get transcribed. Commonly used for names, brands, street, etc. Entries may reference dynamic variables with `{{variable}}` syntax.\n\n- `call_screening_option?: { agent_identity: string; call_purpose: string; }`\n If this option is set, the agent prompt will include call screen handling instructions for identity and call purpose questions. Set this to null to disable call screen prompt instructions.\n - `agent_identity: string`\n Identity the agent should provide when a call screen asks who is calling. Dynamic variables are supported.\n - `call_purpose: string`\n Purpose the agent should provide when a call screen asks why it is calling. Dynamic variables are supported.\n\n- `custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }`\n Custom STT configuration. Only used when stt_mode is set to custom.\n - `endpointing_ms: number`\n Endpointing timeout in milliseconds. Minimum is 100 for Azure, 10 for Deepgram, 500 for Soniox\n - `provider: 'azure' | 'deepgram' | 'soniox'`\n ASR provider name.\n\n- `data_storage_retention_days?: number`\n Number of days to retain call/chat data before automatic deletion. Must be between 1 and 730 days. If not set, data is retained forever (no automatic deletion).\n\n- `data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'`\n Granular setting to manage how Retell stores sensitive data (transcripts, recordings, logs, etc.).\nThis replaces the deprecated `opt_out_sensitive_data_storage` field.\n- `everything`: Store all data including transcripts, recordings, and logs.\n- `everything_except_pii`: Store data without PII when PII is detected.\n- `basic_attributes_only`: Store only basic attributes; no transcripts/recordings/logs.\nIf not set, default value of \"everything\" will apply.\n\n\n- `denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'`\n If set, determines what denoising mode to use. Use \"no-denoise\" to bypass all audio denoising. Default to noise-cancellation.\n\n- `enable_backchannel?: boolean`\n Controls whether the agent would backchannel (agent interjects the speaker with phrases like \"yeah\", \"uh-huh\" to signify interest and engagement). Backchannel when enabled tends to show up more in longer user utterances. If not set, agent will not backchannel.\n\n- `enable_dynamic_responsiveness?: boolean`\n If set to true, the agent will dynamically adjust how quickly it responds based on the user's speech rate and past turn-taking behavior in the call. If unset, default value false will apply.\n\n- `enable_dynamic_voice_speed?: boolean`\n If set to true, will enable dynamic voice speed adjustment based on the user's speech rate and conversation context. If unset, default value false will apply.\n\n- `end_call_after_silence_ms?: number`\n If users stay silent for a period after agent speech, end the call. The minimum value allowed is 10,000 ms (10 s). By default, this is set to 600000 (10 min).\n\n- `fallback_voice_ids?: string[]`\n When TTS provider for the selected voice is experiencing outages, we would use fallback voices listed here for the agent. Voice id and the fallback voice ids must be from different TTS providers. The system would go through the list in order, if the first one in the list is also having outage, it would use the next one. Set to null to remove voice fallback for the agent.\n\n- `guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }`\n Configuration for guardrail checks to detect and prevent prohibited topics in agent output and user input.\n - `input_topics?: 'platform_integrity_jailbreaking'[]`\n Selected prohibited user topic categories to check. When user messages contain these topics, the agent will respond with a placeholder message instead of processing the request.\n - `output_topics?: string[]`\n Selected prohibited agent topic categories to check. When agent messages contain these topics, they will be replaced with a placeholder message.\n\n- `handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }`\n Toggle behavior presets on/off to influence agent response style and behaviors.\n - `ai_disclosure?: boolean`\n When asked, acknowledge being a virtual assistant.\n - `default_personality?: boolean`\n Professional call center rep baseline.\n - `echo_verification?: boolean`\n Repeat back and confirm important details (voice only).\n - `high_empathy?: boolean`\n Warm acknowledgment of caller concerns.\n - `nato_phonetic_alphabet?: boolean`\n Spell using NATO phonetic alphabet style (voice only).\n - `natural_filler_words?: boolean`\n Sprinkle natural speech fillers like \"um\", \"you know\" for a more human, conversational tone.\n - `scope_boundaries?: boolean`\n Stay within prompt/context scope, don't invent details.\n - `smart_matching?: boolean`\n Treat near-match similar words as same entity to reduce impact of transcription error (voice only).\n - `speech_normalization?: boolean`\n Convert numbers/dates/currency to spoken forms (voice only).\n\n- `interruption_sensitivity?: number`\n Controls how sensitive the agent is to user interruptions. Value ranging from [0,1]. Lower value means it will take longer / more words for user to interrupt agent, while higher value means it's easier for user to interrupt agent. If unset, default value 1 will apply. When this is set to 0, agent would never be interrupted.\n\n- `ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }`\n If this option is set, the call will try to detect IVR in the first 3 minutes of the call. Actions defined will be applied when the IVR is detected. Set this to null to disable IVR detection.\n - `action: { type: 'hangup'; }`\n - `detection_prompt?: string`\n Optionally describe what should be treated as an IVR. Leave as null to use the default definition.\n\n- `language?: string | string[]`\n Specifies what language(s) the agent will operate in. Accepts either a single scalar locale (e.g. `en-US`), the legacy scalar value `multi` for multilingual support, or an array of concrete locale codes for explicit multi-locale selection (e.g. `[\"en-US\",\"es-ES\"]`). The array form must contain concrete locale codes only — the `multi` value is valid only as the scalar legacy form and must not appear inside an array. Single-element arrays are normalized to the equivalent scalar on output. If unset, defaults to `en-US`.\n\n- `max_call_duration_ms?: number`\n Maximum allowed length for the call, will force end the call if reached. The minimum value allowed is 60,000 ms (1 min), and maximum value allowed is 7,200,000 (2 hours). By default, this is set to 3,600,000 (1 hour).\n\n- `opt_in_signed_url?: boolean`\n Whether this agent opts in for signed URLs for public logs and recordings. When enabled, the generated URLs will include security signatures that restrict access and automatically expire after 24 hours.\n\n- `pii_config?: { categories: string[]; mode: 'post_call'; }`\n Configuration for PII scrubbing from transcripts and recordings.\n - `categories: string[]`\n List of PII categories to scrub from transcripts and recordings. PII redaction is only active when this list is non-empty; an empty array means no PII scrubbing is performed.\n - `mode: 'post_call'`\n The processing mode for PII scrubbing. Currently only post-call is supported.\n\n- `post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[]`\n Post call analysis data to extract from the call. This data will augment the pre-defined variables extracted in the call analysis. This will be available after the call ends.\n\n- `post_call_analysis_model?: string`\n The model to use for post call analysis. Default to gpt-4.1.\n\n- `pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[]`\n A list of words / phrases and their pronunciation to be used to guide the audio synthesize for consistent pronunciation. Check the dashboard to see what provider supports this feature. Set to null to remove pronunciation dictionary from this agent.\n\n- `reminder_max_count?: number`\n If set, controls how many times agent would remind user when user is unresponsive. Must be a non negative integer. If unset, default value of 1 will apply (remind once). Set to 0 to disable agent from reminding.\n\n- `reminder_trigger_ms?: number`\n If set (in milliseconds), will trigger a reminder to the agent to speak if the user has been silent for the specified duration after some agent speech. Must be a positive number. If unset, default value of 10000 ms (10 s) will apply.\n\n- `responsiveness?: number`\n Controls how responsive is the agent. Value ranging from [0,1]. Lower value means less responsive agent (wait more, respond slower), while higher value means faster exchanges (respond when it can). If unset, default value 1 will apply.\n\n- `ring_duration_ms?: number`\n If set, the phone ringing will last for the specified amount of milliseconds. This applies for both outbound call ringtime, and call transfer ringtime. Default to 30000 (30 s). Valid range is [5000, 300000].\n\n- `signed_url_expiration_ms?: number`\n The expiration time for the signed url in milliseconds. Only applicable when opt_in_signed_url is true. If not set, default value of 86400000 (24 hours) will apply.\n\n- `stt_mode?: 'fast' | 'accurate' | 'custom'`\n If set, determines whether speech to text should focus on latency or accuracy. Default to fast mode. When set to custom, custom_stt_config must be provided.\n\n- `timezone?: string`\n IANA timezone for the agent (e.g. America/New_York). Defaults to America/Los_Angeles if not set.\n\n- `user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }`\n - `digit_limit?: number`\n The maximum number of digits allowed in the user's DTMF (Dual-Tone Multi-Frequency) input per turn. Once this limit is reached, the input is considered complete and a response will be generated immediately.\n - `termination_key?: string`\n A single key that signals the end of DTMF input. Acceptable values include any digit (0-9), the pound/hash symbol (#), or the asterisk (*).\n - `timeout_ms?: number`\n The time (in milliseconds) to wait for user DTMF input before timing out. The timer resets with each digit received.\n\n- `version_description?: string`\n Optional description of the agent version. Used for your own reference and documentation.\n\n- `vocab_specialization?: 'general' | 'medical'`\n If set, determines the vocabulary set to use for transcription. This setting only applies for English agents, for non English agent, this setting is a no-op. Default to general.\n\n- `voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'`\n Controls the emotional tone of the agent's voice. Currently supported for Cartesia and Minimax TTS providers. If unset, no emotion will be used.\n\n\n- `voice_model?: string`\n Select the voice model used for the selected voice. Each provider has a set of available voice models. Set to null to remove voice model selection, and default ones will apply. Check out dashboard for more details of each voice model.\n\n- `voice_speed?: number`\n Controls speed of voice. Value ranging from [0.5,2]. Lower value means slower speech, while higher value means faster speech rate. If unset, default value 1 will apply.\n\n- `voice_temperature?: number`\n Controls how stable the voice is. Value ranging from [0,2]. Lower value means more stable, and higher value means more variant speech generation. Check the dashboard to see what provider supports this feature. If unset, default value 1 will apply.\n\n- `voicemail_detection_timeout_ms?: number`\n Configures when to stop running voicemail detection, as it becomes unlikely to hit voicemail after a couple minutes, and keep running it will only have negative impact. The minimum value allowed is 5,000 ms (5 s), and maximum value allowed is 180,000 (3 minutes). By default, this is set to 30,000 (30 s).\n\n- `voicemail_message?: string`\n The message to be played when the call enters a voicemail. Note that this feature is only available for phone calls. If you want to hangup after hitting voicemail, set this to empty string.\n\n- `voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }`\n If this option is set, the call will try to detect voicemail in the first 3 minutes of the call. Actions defined (hangup, or leave a message) will be applied when the voicemail is detected. Set this to null to disable voicemail detection.\n - `action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }`\n - `detection_prompt?: string`\n Optionally describe what should be treated as voicemail. Leave as null to use the default definition.\n\n- `volume?: number`\n If set, will control the volume of the agent. Value ranging from [0,2]. Lower value means quieter agent speech, while higher value means louder agent speech. If unset, default value 1 will apply.\n\n- `webhook_events?: string[]`\n Which webhook events this agent should receive. If not set, defaults to call_started, call_ended, call_analyzed.\n\n- `webhook_timeout_ms?: number`\n The timeout for the webhook in milliseconds. If not set, default value of 10000 will apply.\n\n- `webhook_url?: string`\n The webhook for agent to listen to call events. See what events it would get at [webhook doc](/features/webhook). If set, will binds webhook events for this agent to the specified url, and will ignore the account level webhook for this agent. Set to `null` to remove webhook url from this agent.\n\n### Returns\n\n- `{ agent_id: string; last_modification_timestamp: number; response_engine: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }; version: number; voice_id: string; agent_name?: string; allow_dtmf_interruption?: boolean; allow_user_dtmf?: boolean; ambient_sound?: string; ambient_sound_volume?: number; analysis_successful_prompt?: string; analysis_summary_prompt?: string; analysis_user_sentiment_prompt?: string; assigned_tags?: string[]; backchannel_frequency?: number; backchannel_words?: string[]; base_version?: number; begin_message_delay_ms?: number; boosted_keywords?: string[]; call_screening_option?: { agent_identity: string; call_purpose: string; }; custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }; data_storage_retention_days?: number; data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'; denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'; enable_backchannel?: boolean; enable_dynamic_responsiveness?: boolean; enable_dynamic_voice_speed?: boolean; end_call_after_silence_ms?: number; fallback_voice_ids?: string[]; guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }; handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }; interruption_sensitivity?: number; is_published?: boolean; ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }; language?: string | string[]; max_call_duration_ms?: number; opt_in_signed_url?: boolean; pii_config?: { categories: string[]; mode: 'post_call'; }; post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[]; post_call_analysis_model?: string; pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[]; reminder_max_count?: number; reminder_trigger_ms?: number; responsiveness?: number; ring_duration_ms?: number; signed_url_expiration_ms?: number; stt_mode?: 'fast' | 'accurate' | 'custom'; timezone?: string; user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }; version_description?: string; vocab_specialization?: 'general' | 'medical'; voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'; voice_model?: string; voice_speed?: number; voice_temperature?: number; voicemail_detection_timeout_ms?: number; voicemail_message?: string; voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }; volume?: number; webhook_events?: string[]; webhook_timeout_ms?: number; webhook_url?: string; }`\n\n - `agent_id: string`\n - `last_modification_timestamp: number`\n - `response_engine: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }`\n - `version: number`\n - `voice_id: string`\n - `agent_name?: string`\n - `allow_dtmf_interruption?: boolean`\n - `allow_user_dtmf?: boolean`\n - `ambient_sound?: string`\n - `ambient_sound_volume?: number`\n - `analysis_successful_prompt?: string`\n - `analysis_summary_prompt?: string`\n - `analysis_user_sentiment_prompt?: string`\n - `assigned_tags?: string[]`\n - `backchannel_frequency?: number`\n - `backchannel_words?: string[]`\n - `base_version?: number`\n - `begin_message_delay_ms?: number`\n - `boosted_keywords?: string[]`\n - `call_screening_option?: { agent_identity: string; call_purpose: string; }`\n - `custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }`\n - `data_storage_retention_days?: number`\n - `data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'`\n - `denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'`\n - `enable_backchannel?: boolean`\n - `enable_dynamic_responsiveness?: boolean`\n - `enable_dynamic_voice_speed?: boolean`\n - `end_call_after_silence_ms?: number`\n - `fallback_voice_ids?: string[]`\n - `guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }`\n - `handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }`\n - `interruption_sensitivity?: number`\n - `is_published?: boolean`\n - `ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }`\n - `language?: string | string[]`\n - `max_call_duration_ms?: number`\n - `opt_in_signed_url?: boolean`\n - `pii_config?: { categories: string[]; mode: 'post_call'; }`\n - `post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[]`\n - `post_call_analysis_model?: string`\n - `pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[]`\n - `reminder_max_count?: number`\n - `reminder_trigger_ms?: number`\n - `responsiveness?: number`\n - `ring_duration_ms?: number`\n - `signed_url_expiration_ms?: number`\n - `stt_mode?: 'fast' | 'accurate' | 'custom'`\n - `timezone?: string`\n - `user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }`\n - `version_description?: string`\n - `vocab_specialization?: 'general' | 'medical'`\n - `voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'`\n - `voice_model?: string`\n - `voice_speed?: number`\n - `voice_temperature?: number`\n - `voicemail_detection_timeout_ms?: number`\n - `voicemail_message?: string`\n - `voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }`\n - `volume?: number`\n - `webhook_events?: string[]`\n - `webhook_timeout_ms?: number`\n - `webhook_url?: string`\n\n### Example\n\n```typescript\nimport Retell from 'retell-sdk';\n\nconst client = new Retell();\n\nconst agentResponse = await client.agent.create({\n response_engine: { llm_id: 'llm_234sdertfsdsfsdf', type: 'retell-llm' },\n voice_id: 'retell-Cimo',\n});\n\nconsole.log(agentResponse);\n```",
728
728
  perLanguage: {
729
729
  typescript: {
730
730
  method: 'client.agent.create',
731
731
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst agentResponse = await client.agent.create({\n response_engine: { llm_id: 'llm_234sdertfsdsfsdf', type: 'retell-llm' },\n voice_id: 'retell-Cimo',\n});\n\nconsole.log(agentResponse.agent_id);",
732
732
  },
733
+ http: {
734
+ example: 'curl https://api.retellai.com/create-agent \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d "{\n \\"response_engine\\": {\n \\"llm_id\\": \\"llm_234sdertfsdsfsdf\\",\n \\"type\\": \\"retell-llm\\",\n \\"version\\": 0\n },\n \\"voice_id\\": \\"retell-Cimo\\",\n \\"agent_name\\": \\"Jarvis\\",\n \\"allow_dtmf_interruption\\": false,\n \\"allow_user_dtmf\\": true,\n \\"ambient_sound_volume\\": 1,\n \\"analysis_successful_prompt\\": \\"The agent finished the task and the call was complete without being cutoff.\\",\n \\"analysis_summary_prompt\\": \\"Summarize the outcome of the conversation in two sentences.\\",\n \\"analysis_user_sentiment_prompt\\": \\"Evaluate the user\'s sentiment based on their tone and satisfaction level.\\",\n \\"backchannel_frequency\\": 0.9,\n \\"backchannel_words\\": [\n \\"yeah\\",\n \\"uh-huh\\"\n ],\n \\"begin_message_delay_ms\\": 1000,\n \\"boosted_keywords\\": [\n \\"retell\\",\n \\"kroger\\"\n ],\n \\"data_storage_retention_days\\": 30,\n \\"data_storage_setting\\": \\"everything\\",\n \\"denoising_mode\\": \\"noise-cancellation\\",\n \\"enable_backchannel\\": true,\n \\"enable_dynamic_responsiveness\\": true,\n \\"enable_dynamic_voice_speed\\": true,\n \\"end_call_after_silence_ms\\": 600000,\n \\"fallback_voice_ids\\": [\n \\"cartesia-Cimo\\",\n \\"minimax-Cimo\\"\n ],\n \\"interruption_sensitivity\\": 1,\n \\"ivr_option\\": {\n \\"action\\": {\n \\"type\\": \\"hangup\\"\n }\n },\n \\"max_call_duration_ms\\": 3600000,\n \\"opt_in_signed_url\\": true,\n \\"post_call_analysis_model\\": \\"gpt-4.1-mini\\",\n \\"reminder_max_count\\": 2,\n \\"reminder_trigger_ms\\": 10000,\n \\"responsiveness\\": 1,\n \\"ring_duration_ms\\": 30000,\n \\"signed_url_expiration_ms\\": 86400000,\n \\"stt_mode\\": \\"fast\\",\n \\"timezone\\": \\"America/New_York\\",\n \\"version_description\\": \\"Customer support agent for handling product inquiries\\",\n \\"vocab_specialization\\": \\"general\\",\n \\"voice_emotion\\": \\"calm\\",\n \\"voice_speed\\": 1,\n \\"voice_temperature\\": 1,\n \\"voicemail_detection_timeout_ms\\": 30000,\n \\"voicemail_message\\": \\"Hi, please give us a callback.\\",\n \\"voicemail_option\\": {\n \\"action\\": {\n \\"text\\": \\"Please give us a callback tomorrow at 10am.\\",\n \\"type\\": \\"static_text\\"\n }\n },\n \\"volume\\": 1,\n \\"webhook_timeout_ms\\": 10000,\n \\"webhook_url\\": \\"https://webhook-url-here\\"\n }"',
735
+ },
733
736
  python: {
734
737
  method: 'agent.create',
735
738
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nagent_response = client.agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n)\nprint(agent_response.agent_id)',
736
739
  },
737
- http: {
738
- example: 'curl https://api.retellai.com/create-agent \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d "{\n \\"response_engine\\": {\n \\"llm_id\\": \\"llm_234sdertfsdsfsdf\\",\n \\"type\\": \\"retell-llm\\",\n \\"version\\": 0\n },\n \\"voice_id\\": \\"retell-Cimo\\",\n \\"agent_name\\": \\"Jarvis\\",\n \\"allow_dtmf_interruption\\": false,\n \\"allow_user_dtmf\\": true,\n \\"ambient_sound_volume\\": 1,\n \\"analysis_successful_prompt\\": \\"The agent finished the task and the call was complete without being cutoff.\\",\n \\"analysis_summary_prompt\\": \\"Summarize the outcome of the conversation in two sentences.\\",\n \\"analysis_user_sentiment_prompt\\": \\"Evaluate the user\'s sentiment based on their tone and satisfaction level.\\",\n \\"backchannel_frequency\\": 0.9,\n \\"backchannel_words\\": [\n \\"yeah\\",\n \\"uh-huh\\"\n ],\n \\"begin_message_delay_ms\\": 1000,\n \\"boosted_keywords\\": [\n \\"retell\\",\n \\"kroger\\"\n ],\n \\"data_storage_retention_days\\": 30,\n \\"data_storage_setting\\": \\"everything\\",\n \\"denoising_mode\\": \\"noise-cancellation\\",\n \\"enable_backchannel\\": true,\n \\"enable_dynamic_responsiveness\\": true,\n \\"enable_dynamic_voice_speed\\": true,\n \\"end_call_after_silence_ms\\": 600000,\n \\"fallback_voice_ids\\": [\n \\"cartesia-Cimo\\",\n \\"minimax-Cimo\\"\n ],\n \\"interruption_sensitivity\\": 1,\n \\"ivr_option\\": {\n \\"action\\": {\n \\"type\\": \\"hangup\\"\n }\n },\n \\"max_call_duration_ms\\": 3600000,\n \\"opt_in_signed_url\\": true,\n \\"post_call_analysis_model\\": \\"gpt-4.1-mini\\",\n \\"reminder_max_count\\": 2,\n \\"reminder_trigger_ms\\": 10000,\n \\"responsiveness\\": 1,\n \\"ring_duration_ms\\": 30000,\n \\"signed_url_expiration_ms\\": 86400000,\n \\"stt_mode\\": \\"fast\\",\n \\"timezone\\": \\"America/New_York\\",\n \\"version_description\\": \\"Customer support agent for handling product inquiries\\",\n \\"vocab_specialization\\": \\"general\\",\n \\"voice_emotion\\": \\"calm\\",\n \\"voice_speed\\": 1,\n \\"voice_temperature\\": 1,\n \\"voicemail_detection_timeout_ms\\": 30000,\n \\"voicemail_message\\": \\"Hi, please give us a callback.\\",\n \\"voicemail_option\\": {\n \\"action\\": {\n \\"text\\": \\"Please give us a callback tomorrow at 10am.\\",\n \\"type\\": \\"static_text\\"\n }\n },\n \\"volume\\": 1,\n \\"webhook_timeout_ms\\": 10000,\n \\"webhook_url\\": \\"https://webhook-url-here\\"\n }"',
739
- },
740
740
  },
741
741
  },
742
742
  {
@@ -755,13 +755,13 @@ const EMBEDDED_METHODS = [
755
755
  method: 'client.agent.retrieve',
756
756
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst agentResponse = await client.agent.retrieve('16b980523634a6dc504898cda492e939');\n\nconsole.log(agentResponse.agent_id);",
757
757
  },
758
+ http: {
759
+ example: 'curl https://api.retellai.com/get-agent/$AGENT_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
760
+ },
758
761
  python: {
759
762
  method: 'agent.retrieve',
760
763
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nagent_response = client.agent.retrieve(\n agent_id="16b980523634a6dc504898cda492e939",\n)\nprint(agent_response.agent_id)',
761
764
  },
762
- http: {
763
- example: 'curl https://api.retellai.com/get-agent/$AGENT_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
764
- },
765
765
  },
766
766
  },
767
767
  {
@@ -785,13 +785,13 @@ const EMBEDDED_METHODS = [
785
785
  method: 'client.agent.list',
786
786
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst agentResponses = await client.agent.list();\n\nconsole.log(agentResponses);",
787
787
  },
788
+ http: {
789
+ example: 'curl https://api.retellai.com/list-agents \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
790
+ },
788
791
  python: {
789
792
  method: 'agent.list',
790
793
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nagent_responses = client.agent.list()\nprint(agent_responses)',
791
794
  },
792
- http: {
793
- example: 'curl https://api.retellai.com/list-agents \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
794
- },
795
795
  },
796
796
  },
797
797
  {
@@ -863,19 +863,19 @@ const EMBEDDED_METHODS = [
863
863
  'webhook_url?: string;',
864
864
  ],
865
865
  response: 'object',
866
- markdown: "## update\n\n`client.agent.update(agent_id: string, version?: number | string, agent_name?: string, allow_dtmf_interruption?: boolean, allow_user_dtmf?: boolean, ambient_sound?: string, ambient_sound_volume?: number, analysis_successful_prompt?: string, analysis_summary_prompt?: string, analysis_user_sentiment_prompt?: string, backchannel_frequency?: number, backchannel_words?: string[], begin_message_delay_ms?: number, boosted_keywords?: string[], call_screening_option?: { agent_identity: string; call_purpose: string; }, custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }, data_storage_retention_days?: number, data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only', denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation', enable_backchannel?: boolean, enable_dynamic_responsiveness?: boolean, enable_dynamic_voice_speed?: boolean, end_call_after_silence_ms?: number, fallback_voice_ids?: string[], guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }, handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }, interruption_sensitivity?: number, ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }, language?: string | string[], max_call_duration_ms?: number, opt_in_signed_url?: boolean, pii_config?: { categories: string[]; mode: 'post_call'; }, post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[], post_call_analysis_model?: string, pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[], reminder_max_count?: number, reminder_trigger_ms?: number, response_engine?: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }, responsiveness?: number, ring_duration_ms?: number, signed_url_expiration_ms?: number, stt_mode?: 'fast' | 'accurate' | 'custom', timezone?: string, user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }, version_description?: string, vocab_specialization?: 'general' | 'medical', voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised', voice_id?: string, voice_model?: string, voice_speed?: number, voice_temperature?: number, voicemail_detection_timeout_ms?: number, voicemail_message?: string, voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }, volume?: number, webhook_events?: string[], webhook_timeout_ms?: number, webhook_url?: string): { agent_id: string; last_modification_timestamp: number; response_engine: object | object | object; version: number; voice_id: string; agent_name?: string; allow_dtmf_interruption?: boolean; allow_user_dtmf?: boolean; ambient_sound?: string; ambient_sound_volume?: number; analysis_successful_prompt?: string; analysis_summary_prompt?: string; analysis_user_sentiment_prompt?: string; assigned_tags?: string[]; backchannel_frequency?: number; backchannel_words?: string[]; base_version?: number; begin_message_delay_ms?: number; boosted_keywords?: string[]; call_screening_option?: object; custom_stt_config?: object; data_storage_retention_days?: number; data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'; denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'; enable_backchannel?: boolean; enable_dynamic_responsiveness?: boolean; enable_dynamic_voice_speed?: boolean; end_call_after_silence_ms?: number; fallback_voice_ids?: string[]; guardrail_config?: object; handbook_config?: object; interruption_sensitivity?: number; is_published?: boolean; ivr_option?: object; language?: string | string[]; max_call_duration_ms?: number; opt_in_signed_url?: boolean; pii_config?: object; post_call_analysis_data?: object | object | object | object | object[]; post_call_analysis_model?: string; pronunciation_dictionary?: object[]; reminder_max_count?: number; reminder_trigger_ms?: number; responsiveness?: number; ring_duration_ms?: number; signed_url_expiration_ms?: number; stt_mode?: 'fast' | 'accurate' | 'custom'; timezone?: string; user_dtmf_options?: object; version_description?: string; vocab_specialization?: 'general' | 'medical'; voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'; voice_model?: string; voice_speed?: number; voice_temperature?: number; voicemail_detection_timeout_ms?: number; voicemail_message?: string; voicemail_option?: object; volume?: number; webhook_events?: string[]; webhook_timeout_ms?: number; webhook_url?: string; }`\n\n**patch** `/update-agent/{agent_id}`\n\nUpdate an existing agent's latest draft version\n\n### Parameters\n\n- `agent_id: string`\n\n- `version?: number | string`\n Optional version of the API to use for this request. Default to latest version.\n\n- `agent_name?: string`\n The name of the agent. Only used for your own reference.\n\n- `allow_dtmf_interruption?: boolean`\n If set to true, DTMF input will interrupt the agent even when interruption_sensitivity is 0. Can be overridden per conversation or subagent node. Default to false.\n\n- `allow_user_dtmf?: boolean`\n If set to true, DTMF input will be accepted and processed. If false, any DTMF input will be ignored. Default to true.\n\n- `ambient_sound?: string`\n If set, will add ambient environment sound to the call to make experience more realistic. Currently supports the following options:\n\n- `coffee-shop`: Coffee shop ambience with people chatting in background. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/coffee-shop.wav)\n- `convention-hall`: Convention hall ambience, with some echo and people chatting in background. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/convention-hall.wav)\n- `summer-outdoor`: Summer outdoor ambience with cicada chirping. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/summer-outdoor.wav)\n- `mountain-outdoor`: Mountain outdoor ambience with birds singing. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/mountain-outdoor.wav)\n- `static-noise`: Constant static noise. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/static-noise.wav)\n- `call-center`: Call center work noise. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/call-center.wav)\nSet to `null` to remove ambient sound from this agent.\n\n- `ambient_sound_volume?: number`\n If set, will control the volume of the ambient sound. Value ranging from [0,2]. Lower value means quieter ambient sound, while higher value means louder ambient sound. If unset, default value 1 will apply.\n\n- `analysis_successful_prompt?: string`\n Prompt to determine whether the post call or chat analysis should mark the interaction as successful. Set to null to use the default prompt.\n\n- `analysis_summary_prompt?: string`\n Prompt to guide how the post call or chat analysis summary should be generated. When unset, the default system prompt is used. Set to null to use the default prompt.\n\n- `analysis_user_sentiment_prompt?: string`\n Prompt to guide how the post call or chat analysis should evaluate user sentiment. When unset, the default system prompt is used. Set to null to use the default prompt.\n\n- `backchannel_frequency?: number`\n Only applicable when enable_backchannel is true. Controls how often the agent would backchannel when a backchannel is possible. Value ranging from [0,1]. Lower value means less frequent backchannel, while higher value means more frequent backchannel. If unset, default value 0.8 will apply.\n\n- `backchannel_words?: string[]`\n Only applicable when enable_backchannel is true. A list of words that the agent would use as backchannel. If not set, default backchannel words will apply. Check out [backchannel default words](/agent/interaction-configuration#backchannel) for more details. Note that certain voices do not work too well with certain words, so it's recommended to experiment before adding any words.\n\n- `begin_message_delay_ms?: number`\n If set, will delay the first message by the specified amount of milliseconds, so that it gives user more time to prepare to take the call. Valid range is [0, 5000]. If not set or set to 0, agent will speak immediately. Only applicable when agent speaks first.\n\n- `boosted_keywords?: string[]`\n Provide a customized list of keywords to bias the transcriber model, so that these words are more likely to get transcribed. Commonly used for names, brands, street, etc. Entries may reference dynamic variables with `{{variable}}` syntax.\n\n- `call_screening_option?: { agent_identity: string; call_purpose: string; }`\n If this option is set, the agent prompt will include call screen handling instructions for identity and call purpose questions. Set this to null to disable call screen prompt instructions.\n - `agent_identity: string`\n Identity the agent should provide when a call screen asks who is calling. Dynamic variables are supported.\n - `call_purpose: string`\n Purpose the agent should provide when a call screen asks why it is calling. Dynamic variables are supported.\n\n- `custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }`\n Custom STT configuration. Only used when stt_mode is set to custom.\n - `endpointing_ms: number`\n Endpointing timeout in milliseconds. Minimum is 100 for Azure, 10 for Deepgram, 500 for Soniox\n - `provider: 'azure' | 'deepgram' | 'soniox'`\n ASR provider name.\n\n- `data_storage_retention_days?: number`\n Number of days to retain call/chat data before automatic deletion. Must be between 1 and 730 days. If not set, data is retained forever (no automatic deletion).\n\n- `data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'`\n Granular setting to manage how Retell stores sensitive data (transcripts, recordings, logs, etc.).\nThis replaces the deprecated `opt_out_sensitive_data_storage` field.\n- `everything`: Store all data including transcripts, recordings, and logs.\n- `everything_except_pii`: Store data without PII when PII is detected.\n- `basic_attributes_only`: Store only basic attributes; no transcripts/recordings/logs.\nIf not set, default value of \"everything\" will apply.\n\n- `denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'`\n If set, determines what denoising mode to use. Use \"no-denoise\" to bypass all audio denoising. Default to noise-cancellation.\n\n- `enable_backchannel?: boolean`\n Controls whether the agent would backchannel (agent interjects the speaker with phrases like \"yeah\", \"uh-huh\" to signify interest and engagement). Backchannel when enabled tends to show up more in longer user utterances. If not set, agent will not backchannel.\n\n- `enable_dynamic_responsiveness?: boolean`\n If set to true, the agent will dynamically adjust how quickly it responds based on the user's speech rate and past turn-taking behavior in the call. If unset, default value false will apply.\n\n- `enable_dynamic_voice_speed?: boolean`\n If set to true, will enable dynamic voice speed adjustment based on the user's speech rate and conversation context. If unset, default value false will apply.\n\n- `end_call_after_silence_ms?: number`\n If users stay silent for a period after agent speech, end the call. The minimum value allowed is 10,000 ms (10 s). By default, this is set to 600000 (10 min).\n\n- `fallback_voice_ids?: string[]`\n When TTS provider for the selected voice is experiencing outages, we would use fallback voices listed here for the agent. Voice id and the fallback voice ids must be from different TTS providers. The system would go through the list in order, if the first one in the list is also having outage, it would use the next one. Set to null to remove voice fallback for the agent.\n\n- `guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }`\n Configuration for guardrail checks to detect and prevent prohibited topics in agent output and user input.\n - `input_topics?: 'platform_integrity_jailbreaking'[]`\n Selected prohibited user topic categories to check. When user messages contain these topics, the agent will respond with a placeholder message instead of processing the request.\n - `output_topics?: string[]`\n Selected prohibited agent topic categories to check. When agent messages contain these topics, they will be replaced with a placeholder message.\n\n- `handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }`\n Toggle behavior presets on/off to influence agent response style and behaviors.\n - `ai_disclosure?: boolean`\n When asked, acknowledge being a virtual assistant.\n - `default_personality?: boolean`\n Professional call center rep baseline.\n - `echo_verification?: boolean`\n Repeat back and confirm important details (voice only).\n - `high_empathy?: boolean`\n Warm acknowledgment of caller concerns.\n - `nato_phonetic_alphabet?: boolean`\n Spell using NATO phonetic alphabet style (voice only).\n - `natural_filler_words?: boolean`\n Sprinkle natural speech fillers like \"um\", \"you know\" for a more human, conversational tone.\n - `scope_boundaries?: boolean`\n Stay within prompt/context scope, don't invent details.\n - `smart_matching?: boolean`\n Treat near-match similar words as same entity to reduce impact of transcription error (voice only).\n - `speech_normalization?: boolean`\n Convert numbers/dates/currency to spoken forms (voice only).\n\n- `interruption_sensitivity?: number`\n Controls how sensitive the agent is to user interruptions. Value ranging from [0,1]. Lower value means it will take longer / more words for user to interrupt agent, while higher value means it's easier for user to interrupt agent. If unset, default value 1 will apply. When this is set to 0, agent would never be interrupted.\n\n- `ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }`\n If this option is set, the call will try to detect IVR in the first 3 minutes of the call. Actions defined will be applied when the IVR is detected. Set this to null to disable IVR detection.\n - `action: { type: 'hangup'; }`\n - `detection_prompt?: string`\n Optionally describe what should be treated as an IVR. Leave as null to use the default definition.\n\n- `language?: string | string[]`\n Specifies what language(s) the agent will operate in. Accepts either a single scalar locale (e.g. `en-US`), the legacy scalar value `multi` for multilingual support, or an array of concrete locale codes for explicit multi-locale selection (e.g. `[\"en-US\",\"es-ES\"]`). The array form must contain concrete locale codes only — the `multi` value is valid only as the scalar legacy form and must not appear inside an array. Single-element arrays are normalized to the equivalent scalar on output. If unset, defaults to `en-US`.\n\n- `max_call_duration_ms?: number`\n Maximum allowed length for the call, will force end the call if reached. The minimum value allowed is 60,000 ms (1 min), and maximum value allowed is 7,200,000 (2 hours). By default, this is set to 3,600,000 (1 hour).\n\n- `opt_in_signed_url?: boolean`\n Whether this agent opts in for signed URLs for public logs and recordings. When enabled, the generated URLs will include security signatures that restrict access and automatically expire after 24 hours.\n\n- `pii_config?: { categories: string[]; mode: 'post_call'; }`\n Configuration for PII scrubbing from transcripts and recordings.\n - `categories: string[]`\n List of PII categories to scrub from transcripts and recordings. PII redaction is only active when this list is non-empty; an empty array means no PII scrubbing is performed.\n - `mode: 'post_call'`\n The processing mode for PII scrubbing. Currently only post-call is supported.\n\n- `post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[]`\n Post call analysis data to extract from the call. This data will augment the pre-defined variables extracted in the call analysis. This will be available after the call ends.\n\n- `post_call_analysis_model?: string`\n The model to use for post call analysis. Default to gpt-4.1.\n\n- `pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[]`\n A list of words / phrases and their pronunciation to be used to guide the audio synthesize for consistent pronunciation. Check the dashboard to see what provider supports this feature. Set to null to remove pronunciation dictionary from this agent.\n\n- `reminder_max_count?: number`\n If set, controls how many times agent would remind user when user is unresponsive. Must be a non negative integer. If unset, default value of 1 will apply (remind once). Set to 0 to disable agent from reminding.\n\n- `reminder_trigger_ms?: number`\n If set (in milliseconds), will trigger a reminder to the agent to speak if the user has been silent for the specified duration after some agent speech. Must be a positive number. If unset, default value of 10000 ms (10 s) will apply.\n\n- `response_engine?: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }`\n The Response Engine to attach to the agent. It is used to generate responses for the agent. You need to create a Response Engine first before attaching it to an agent.\n\n- `responsiveness?: number`\n Controls how responsive is the agent. Value ranging from [0,1]. Lower value means less responsive agent (wait more, respond slower), while higher value means faster exchanges (respond when it can). If unset, default value 1 will apply.\n\n- `ring_duration_ms?: number`\n If set, the phone ringing will last for the specified amount of milliseconds. This applies for both outbound call ringtime, and call transfer ringtime. Default to 30000 (30 s). Valid range is [5000, 300000].\n\n- `signed_url_expiration_ms?: number`\n The expiration time for the signed url in milliseconds. Only applicable when opt_in_signed_url is true. If not set, default value of 86400000 (24 hours) will apply.\n\n- `stt_mode?: 'fast' | 'accurate' | 'custom'`\n If set, determines whether speech to text should focus on latency or accuracy. Default to fast mode. When set to custom, custom_stt_config must be provided.\n\n- `timezone?: string`\n IANA timezone for the agent (e.g. America/New_York). Defaults to America/Los_Angeles if not set.\n\n- `user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }`\n - `digit_limit?: number`\n The maximum number of digits allowed in the user's DTMF (Dual-Tone Multi-Frequency) input per turn. Once this limit is reached, the input is considered complete and a response will be generated immediately.\n - `termination_key?: string`\n A single key that signals the end of DTMF input. Acceptable values include any digit (0-9), the pound/hash symbol (#), or the asterisk (*).\n - `timeout_ms?: number`\n The time (in milliseconds) to wait for user DTMF input before timing out. The timer resets with each digit received.\n\n- `version_description?: string`\n Optional description of the agent version. Used for your own reference and documentation.\n\n- `vocab_specialization?: 'general' | 'medical'`\n If set, determines the vocabulary set to use for transcription. This setting only applies for English agents, for non English agent, this setting is a no-op. Default to general.\n\n- `voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'`\n Controls the emotional tone of the agent's voice. Currently supported for Cartesia and Minimax TTS providers. If unset, no emotion will be used.\n\n- `voice_id?: string`\n Unique voice id used for the agent. Find list of available voices and their preview in Dashboard.\n\n- `voice_model?: string`\n Select the voice model used for the selected voice. Each provider has a set of available voice models. Set to null to remove voice model selection, and default ones will apply. Check out dashboard for more details of each voice model.\n\n- `voice_speed?: number`\n Controls speed of voice. Value ranging from [0.5,2]. Lower value means slower speech, while higher value means faster speech rate. If unset, default value 1 will apply.\n\n- `voice_temperature?: number`\n Controls how stable the voice is. Value ranging from [0,2]. Lower value means more stable, and higher value means more variant speech generation. Check the dashboard to see what provider supports this feature. If unset, default value 1 will apply.\n\n- `voicemail_detection_timeout_ms?: number`\n Configures when to stop running voicemail detection, as it becomes unlikely to hit voicemail after a couple minutes, and keep running it will only have negative impact. The minimum value allowed is 5,000 ms (5 s), and maximum value allowed is 180,000 (3 minutes). By default, this is set to 30,000 (30 s).\n\n- `voicemail_message?: string`\n The message to be played when the call enters a voicemail. Note that this feature is only available for phone calls. If you want to hangup after hitting voicemail, set this to empty string.\n\n- `voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }`\n If this option is set, the call will try to detect voicemail in the first 3 minutes of the call. Actions defined (hangup, or leave a message) will be applied when the voicemail is detected. Set this to null to disable voicemail detection.\n - `action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }`\n - `detection_prompt?: string`\n Optionally describe what should be treated as voicemail. Leave as null to use the default definition.\n\n- `volume?: number`\n If set, will control the volume of the agent. Value ranging from [0,2]. Lower value means quieter agent speech, while higher value means louder agent speech. If unset, default value 1 will apply.\n\n- `webhook_events?: string[]`\n Which webhook events this agent should receive. If not set, defaults to call_started, call_ended, call_analyzed.\n\n- `webhook_timeout_ms?: number`\n The timeout for the webhook in milliseconds. If not set, default value of 10000 will apply.\n\n- `webhook_url?: string`\n The webhook for agent to listen to call events. See what events it would get at [webhook doc](/features/webhook). If set, will binds webhook events for this agent to the specified url, and will ignore the account level webhook for this agent. Set to `null` to remove webhook url from this agent.\n\n### Returns\n\n- `{ agent_id: string; last_modification_timestamp: number; response_engine: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }; version: number; voice_id: string; agent_name?: string; allow_dtmf_interruption?: boolean; allow_user_dtmf?: boolean; ambient_sound?: string; ambient_sound_volume?: number; analysis_successful_prompt?: string; analysis_summary_prompt?: string; analysis_user_sentiment_prompt?: string; assigned_tags?: string[]; backchannel_frequency?: number; backchannel_words?: string[]; base_version?: number; begin_message_delay_ms?: number; boosted_keywords?: string[]; call_screening_option?: { agent_identity: string; call_purpose: string; }; custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }; data_storage_retention_days?: number; data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'; denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'; enable_backchannel?: boolean; enable_dynamic_responsiveness?: boolean; enable_dynamic_voice_speed?: boolean; end_call_after_silence_ms?: number; fallback_voice_ids?: string[]; guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }; handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }; interruption_sensitivity?: number; is_published?: boolean; ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }; language?: string | string[]; max_call_duration_ms?: number; opt_in_signed_url?: boolean; pii_config?: { categories: string[]; mode: 'post_call'; }; post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[]; post_call_analysis_model?: string; pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[]; reminder_max_count?: number; reminder_trigger_ms?: number; responsiveness?: number; ring_duration_ms?: number; signed_url_expiration_ms?: number; stt_mode?: 'fast' | 'accurate' | 'custom'; timezone?: string; user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }; version_description?: string; vocab_specialization?: 'general' | 'medical'; voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'; voice_model?: string; voice_speed?: number; voice_temperature?: number; voicemail_detection_timeout_ms?: number; voicemail_message?: string; voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }; volume?: number; webhook_events?: string[]; webhook_timeout_ms?: number; webhook_url?: string; }`\n\n - `agent_id: string`\n - `last_modification_timestamp: number`\n - `response_engine: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }`\n - `version: number`\n - `voice_id: string`\n - `agent_name?: string`\n - `allow_dtmf_interruption?: boolean`\n - `allow_user_dtmf?: boolean`\n - `ambient_sound?: string`\n - `ambient_sound_volume?: number`\n - `analysis_successful_prompt?: string`\n - `analysis_summary_prompt?: string`\n - `analysis_user_sentiment_prompt?: string`\n - `assigned_tags?: string[]`\n - `backchannel_frequency?: number`\n - `backchannel_words?: string[]`\n - `base_version?: number`\n - `begin_message_delay_ms?: number`\n - `boosted_keywords?: string[]`\n - `call_screening_option?: { agent_identity: string; call_purpose: string; }`\n - `custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }`\n - `data_storage_retention_days?: number`\n - `data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'`\n - `denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'`\n - `enable_backchannel?: boolean`\n - `enable_dynamic_responsiveness?: boolean`\n - `enable_dynamic_voice_speed?: boolean`\n - `end_call_after_silence_ms?: number`\n - `fallback_voice_ids?: string[]`\n - `guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }`\n - `handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }`\n - `interruption_sensitivity?: number`\n - `is_published?: boolean`\n - `ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }`\n - `language?: string | string[]`\n - `max_call_duration_ms?: number`\n - `opt_in_signed_url?: boolean`\n - `pii_config?: { categories: string[]; mode: 'post_call'; }`\n - `post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[]`\n - `post_call_analysis_model?: string`\n - `pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[]`\n - `reminder_max_count?: number`\n - `reminder_trigger_ms?: number`\n - `responsiveness?: number`\n - `ring_duration_ms?: number`\n - `signed_url_expiration_ms?: number`\n - `stt_mode?: 'fast' | 'accurate' | 'custom'`\n - `timezone?: string`\n - `user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }`\n - `version_description?: string`\n - `vocab_specialization?: 'general' | 'medical'`\n - `voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'`\n - `voice_model?: string`\n - `voice_speed?: number`\n - `voice_temperature?: number`\n - `voicemail_detection_timeout_ms?: number`\n - `voicemail_message?: string`\n - `voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }`\n - `volume?: number`\n - `webhook_events?: string[]`\n - `webhook_timeout_ms?: number`\n - `webhook_url?: string`\n\n### Example\n\n```typescript\nimport Retell from 'retell-sdk';\n\nconst client = new Retell();\n\nconst agentResponse = await client.agent.update('16b980523634a6dc504898cda492e939');\n\nconsole.log(agentResponse);\n```",
866
+ markdown: "## update\n\n`client.agent.update(agent_id: string, version?: number | string, agent_name?: string, allow_dtmf_interruption?: boolean, allow_user_dtmf?: boolean, ambient_sound?: string, ambient_sound_volume?: number, analysis_successful_prompt?: string, analysis_summary_prompt?: string, analysis_user_sentiment_prompt?: string, backchannel_frequency?: number, backchannel_words?: string[], begin_message_delay_ms?: number, boosted_keywords?: string[], call_screening_option?: { agent_identity: string; call_purpose: string; }, custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }, data_storage_retention_days?: number, data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only', denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation', enable_backchannel?: boolean, enable_dynamic_responsiveness?: boolean, enable_dynamic_voice_speed?: boolean, end_call_after_silence_ms?: number, fallback_voice_ids?: string[], guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }, handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }, interruption_sensitivity?: number, ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }, language?: string | string[], max_call_duration_ms?: number, opt_in_signed_url?: boolean, pii_config?: { categories: string[]; mode: 'post_call'; }, post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[], post_call_analysis_model?: string, pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[], reminder_max_count?: number, reminder_trigger_ms?: number, response_engine?: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }, responsiveness?: number, ring_duration_ms?: number, signed_url_expiration_ms?: number, stt_mode?: 'fast' | 'accurate' | 'custom', timezone?: string, user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }, version_description?: string, vocab_specialization?: 'general' | 'medical', voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised', voice_id?: string, voice_model?: string, voice_speed?: number, voice_temperature?: number, voicemail_detection_timeout_ms?: number, voicemail_message?: string, voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }, volume?: number, webhook_events?: string[], webhook_timeout_ms?: number, webhook_url?: string): { agent_id: string; last_modification_timestamp: number; response_engine: object | object | object; version: number; voice_id: string; agent_name?: string; allow_dtmf_interruption?: boolean; allow_user_dtmf?: boolean; ambient_sound?: string; ambient_sound_volume?: number; analysis_successful_prompt?: string; analysis_summary_prompt?: string; analysis_user_sentiment_prompt?: string; assigned_tags?: string[]; backchannel_frequency?: number; backchannel_words?: string[]; base_version?: number; begin_message_delay_ms?: number; boosted_keywords?: string[]; call_screening_option?: object; custom_stt_config?: object; data_storage_retention_days?: number; data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'; denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'; enable_backchannel?: boolean; enable_dynamic_responsiveness?: boolean; enable_dynamic_voice_speed?: boolean; end_call_after_silence_ms?: number; fallback_voice_ids?: string[]; guardrail_config?: object; handbook_config?: object; interruption_sensitivity?: number; is_published?: boolean; ivr_option?: object; language?: string | string[]; max_call_duration_ms?: number; opt_in_signed_url?: boolean; pii_config?: object; post_call_analysis_data?: object | object | object | object | object[]; post_call_analysis_model?: string; pronunciation_dictionary?: object[]; reminder_max_count?: number; reminder_trigger_ms?: number; responsiveness?: number; ring_duration_ms?: number; signed_url_expiration_ms?: number; stt_mode?: 'fast' | 'accurate' | 'custom'; timezone?: string; user_dtmf_options?: object; version_description?: string; vocab_specialization?: 'general' | 'medical'; voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'; voice_model?: string; voice_speed?: number; voice_temperature?: number; voicemail_detection_timeout_ms?: number; voicemail_message?: string; voicemail_option?: object; volume?: number; webhook_events?: string[]; webhook_timeout_ms?: number; webhook_url?: string; }`\n\n**patch** `/update-agent/{agent_id}`\n\nUpdate an existing agent's latest draft version\n\n### Parameters\n\n- `agent_id: string`\n\n- `version?: number | string`\n Optional version of the API to use for this request. Default to latest version.\n\n- `agent_name?: string`\n The name of the agent. Only used for your own reference.\n\n- `allow_dtmf_interruption?: boolean`\n If set to true, DTMF input will interrupt the agent even when interruption_sensitivity is 0. Can be overridden per conversation or subagent node. Default to false.\n\n- `allow_user_dtmf?: boolean`\n If set to true, DTMF input will be accepted and processed. If false, any DTMF input will be ignored. Default to true.\n\n- `ambient_sound?: string`\n If set, will add ambient environment sound to the call to make experience more realistic. Currently supports the following options:\n\n- `coffee-shop`: Coffee shop ambience with people chatting in background. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/coffee-shop.wav)\n- `convention-hall`: Convention hall ambience, with some echo and people chatting in background. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/convention-hall.wav)\n- `summer-outdoor`: Summer outdoor ambience with cicada chirping. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/summer-outdoor.wav)\n- `mountain-outdoor`: Mountain outdoor ambience with birds singing. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/mountain-outdoor.wav)\n- `static-noise`: Constant static noise. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/static-noise.wav)\n- `call-center`: Call center work noise. [Listen to Ambience](https://retell-utils-public.s3.us-west-2.amazonaws.com/call-center.wav)\nSet to `null` to remove ambient sound from this agent.\n\n\n- `ambient_sound_volume?: number`\n If set, will control the volume of the ambient sound. Value ranging from [0,2]. Lower value means quieter ambient sound, while higher value means louder ambient sound. If unset, default value 1 will apply.\n\n- `analysis_successful_prompt?: string`\n Prompt to determine whether the post call or chat analysis should mark the interaction as successful. Set to null to use the default prompt.\n\n- `analysis_summary_prompt?: string`\n Prompt to guide how the post call or chat analysis summary should be generated. When unset, the default system prompt is used. Set to null to use the default prompt.\n\n- `analysis_user_sentiment_prompt?: string`\n Prompt to guide how the post call or chat analysis should evaluate user sentiment. When unset, the default system prompt is used. Set to null to use the default prompt.\n\n- `backchannel_frequency?: number`\n Only applicable when enable_backchannel is true. Controls how often the agent would backchannel when a backchannel is possible. Value ranging from [0,1]. Lower value means less frequent backchannel, while higher value means more frequent backchannel. If unset, default value 0.8 will apply.\n\n- `backchannel_words?: string[]`\n Only applicable when enable_backchannel is true. A list of words that the agent would use as backchannel. If not set, default backchannel words will apply. Check out [backchannel default words](/agent/interaction-configuration#backchannel) for more details. Note that certain voices do not work too well with certain words, so it's recommended to experiment before adding any words.\n\n- `begin_message_delay_ms?: number`\n If set, will delay the first message by the specified amount of milliseconds, so that it gives user more time to prepare to take the call. Valid range is [0, 5000]. If not set or set to 0, agent will speak immediately. Only applicable when agent speaks first.\n\n- `boosted_keywords?: string[]`\n Provide a customized list of keywords to bias the transcriber model, so that these words are more likely to get transcribed. Commonly used for names, brands, street, etc. Entries may reference dynamic variables with `{{variable}}` syntax.\n\n- `call_screening_option?: { agent_identity: string; call_purpose: string; }`\n If this option is set, the agent prompt will include call screen handling instructions for identity and call purpose questions. Set this to null to disable call screen prompt instructions.\n - `agent_identity: string`\n Identity the agent should provide when a call screen asks who is calling. Dynamic variables are supported.\n - `call_purpose: string`\n Purpose the agent should provide when a call screen asks why it is calling. Dynamic variables are supported.\n\n- `custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }`\n Custom STT configuration. Only used when stt_mode is set to custom.\n - `endpointing_ms: number`\n Endpointing timeout in milliseconds. Minimum is 100 for Azure, 10 for Deepgram, 500 for Soniox\n - `provider: 'azure' | 'deepgram' | 'soniox'`\n ASR provider name.\n\n- `data_storage_retention_days?: number`\n Number of days to retain call/chat data before automatic deletion. Must be between 1 and 730 days. If not set, data is retained forever (no automatic deletion).\n\n- `data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'`\n Granular setting to manage how Retell stores sensitive data (transcripts, recordings, logs, etc.).\nThis replaces the deprecated `opt_out_sensitive_data_storage` field.\n- `everything`: Store all data including transcripts, recordings, and logs.\n- `everything_except_pii`: Store data without PII when PII is detected.\n- `basic_attributes_only`: Store only basic attributes; no transcripts/recordings/logs.\nIf not set, default value of \"everything\" will apply.\n\n\n- `denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'`\n If set, determines what denoising mode to use. Use \"no-denoise\" to bypass all audio denoising. Default to noise-cancellation.\n\n- `enable_backchannel?: boolean`\n Controls whether the agent would backchannel (agent interjects the speaker with phrases like \"yeah\", \"uh-huh\" to signify interest and engagement). Backchannel when enabled tends to show up more in longer user utterances. If not set, agent will not backchannel.\n\n- `enable_dynamic_responsiveness?: boolean`\n If set to true, the agent will dynamically adjust how quickly it responds based on the user's speech rate and past turn-taking behavior in the call. If unset, default value false will apply.\n\n- `enable_dynamic_voice_speed?: boolean`\n If set to true, will enable dynamic voice speed adjustment based on the user's speech rate and conversation context. If unset, default value false will apply.\n\n- `end_call_after_silence_ms?: number`\n If users stay silent for a period after agent speech, end the call. The minimum value allowed is 10,000 ms (10 s). By default, this is set to 600000 (10 min).\n\n- `fallback_voice_ids?: string[]`\n When TTS provider for the selected voice is experiencing outages, we would use fallback voices listed here for the agent. Voice id and the fallback voice ids must be from different TTS providers. The system would go through the list in order, if the first one in the list is also having outage, it would use the next one. Set to null to remove voice fallback for the agent.\n\n- `guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }`\n Configuration for guardrail checks to detect and prevent prohibited topics in agent output and user input.\n - `input_topics?: 'platform_integrity_jailbreaking'[]`\n Selected prohibited user topic categories to check. When user messages contain these topics, the agent will respond with a placeholder message instead of processing the request.\n - `output_topics?: string[]`\n Selected prohibited agent topic categories to check. When agent messages contain these topics, they will be replaced with a placeholder message.\n\n- `handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }`\n Toggle behavior presets on/off to influence agent response style and behaviors.\n - `ai_disclosure?: boolean`\n When asked, acknowledge being a virtual assistant.\n - `default_personality?: boolean`\n Professional call center rep baseline.\n - `echo_verification?: boolean`\n Repeat back and confirm important details (voice only).\n - `high_empathy?: boolean`\n Warm acknowledgment of caller concerns.\n - `nato_phonetic_alphabet?: boolean`\n Spell using NATO phonetic alphabet style (voice only).\n - `natural_filler_words?: boolean`\n Sprinkle natural speech fillers like \"um\", \"you know\" for a more human, conversational tone.\n - `scope_boundaries?: boolean`\n Stay within prompt/context scope, don't invent details.\n - `smart_matching?: boolean`\n Treat near-match similar words as same entity to reduce impact of transcription error (voice only).\n - `speech_normalization?: boolean`\n Convert numbers/dates/currency to spoken forms (voice only).\n\n- `interruption_sensitivity?: number`\n Controls how sensitive the agent is to user interruptions. Value ranging from [0,1]. Lower value means it will take longer / more words for user to interrupt agent, while higher value means it's easier for user to interrupt agent. If unset, default value 1 will apply. When this is set to 0, agent would never be interrupted.\n\n- `ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }`\n If this option is set, the call will try to detect IVR in the first 3 minutes of the call. Actions defined will be applied when the IVR is detected. Set this to null to disable IVR detection.\n - `action: { type: 'hangup'; }`\n - `detection_prompt?: string`\n Optionally describe what should be treated as an IVR. Leave as null to use the default definition.\n\n- `language?: string | string[]`\n Specifies what language(s) the agent will operate in. Accepts either a single scalar locale (e.g. `en-US`), the legacy scalar value `multi` for multilingual support, or an array of concrete locale codes for explicit multi-locale selection (e.g. `[\"en-US\",\"es-ES\"]`). The array form must contain concrete locale codes only — the `multi` value is valid only as the scalar legacy form and must not appear inside an array. Single-element arrays are normalized to the equivalent scalar on output. If unset, defaults to `en-US`.\n\n- `max_call_duration_ms?: number`\n Maximum allowed length for the call, will force end the call if reached. The minimum value allowed is 60,000 ms (1 min), and maximum value allowed is 7,200,000 (2 hours). By default, this is set to 3,600,000 (1 hour).\n\n- `opt_in_signed_url?: boolean`\n Whether this agent opts in for signed URLs for public logs and recordings. When enabled, the generated URLs will include security signatures that restrict access and automatically expire after 24 hours.\n\n- `pii_config?: { categories: string[]; mode: 'post_call'; }`\n Configuration for PII scrubbing from transcripts and recordings.\n - `categories: string[]`\n List of PII categories to scrub from transcripts and recordings. PII redaction is only active when this list is non-empty; an empty array means no PII scrubbing is performed.\n - `mode: 'post_call'`\n The processing mode for PII scrubbing. Currently only post-call is supported.\n\n- `post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[]`\n Post call analysis data to extract from the call. This data will augment the pre-defined variables extracted in the call analysis. This will be available after the call ends.\n\n- `post_call_analysis_model?: string`\n The model to use for post call analysis. Default to gpt-4.1.\n\n- `pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[]`\n A list of words / phrases and their pronunciation to be used to guide the audio synthesize for consistent pronunciation. Check the dashboard to see what provider supports this feature. Set to null to remove pronunciation dictionary from this agent.\n\n- `reminder_max_count?: number`\n If set, controls how many times agent would remind user when user is unresponsive. Must be a non negative integer. If unset, default value of 1 will apply (remind once). Set to 0 to disable agent from reminding.\n\n- `reminder_trigger_ms?: number`\n If set (in milliseconds), will trigger a reminder to the agent to speak if the user has been silent for the specified duration after some agent speech. Must be a positive number. If unset, default value of 10000 ms (10 s) will apply.\n\n- `response_engine?: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }`\n The Response Engine to attach to the agent. It is used to generate responses for the agent. You need to create a Response Engine first before attaching it to an agent.\n\n- `responsiveness?: number`\n Controls how responsive is the agent. Value ranging from [0,1]. Lower value means less responsive agent (wait more, respond slower), while higher value means faster exchanges (respond when it can). If unset, default value 1 will apply.\n\n- `ring_duration_ms?: number`\n If set, the phone ringing will last for the specified amount of milliseconds. This applies for both outbound call ringtime, and call transfer ringtime. Default to 30000 (30 s). Valid range is [5000, 300000].\n\n- `signed_url_expiration_ms?: number`\n The expiration time for the signed url in milliseconds. Only applicable when opt_in_signed_url is true. If not set, default value of 86400000 (24 hours) will apply.\n\n- `stt_mode?: 'fast' | 'accurate' | 'custom'`\n If set, determines whether speech to text should focus on latency or accuracy. Default to fast mode. When set to custom, custom_stt_config must be provided.\n\n- `timezone?: string`\n IANA timezone for the agent (e.g. America/New_York). Defaults to America/Los_Angeles if not set.\n\n- `user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }`\n - `digit_limit?: number`\n The maximum number of digits allowed in the user's DTMF (Dual-Tone Multi-Frequency) input per turn. Once this limit is reached, the input is considered complete and a response will be generated immediately.\n - `termination_key?: string`\n A single key that signals the end of DTMF input. Acceptable values include any digit (0-9), the pound/hash symbol (#), or the asterisk (*).\n - `timeout_ms?: number`\n The time (in milliseconds) to wait for user DTMF input before timing out. The timer resets with each digit received.\n\n- `version_description?: string`\n Optional description of the agent version. Used for your own reference and documentation.\n\n- `vocab_specialization?: 'general' | 'medical'`\n If set, determines the vocabulary set to use for transcription. This setting only applies for English agents, for non English agent, this setting is a no-op. Default to general.\n\n- `voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'`\n Controls the emotional tone of the agent's voice. Currently supported for Cartesia and Minimax TTS providers. If unset, no emotion will be used.\n\n\n- `voice_id?: string`\n Unique voice id used for the agent. Find list of available voices and their preview in Dashboard.\n\n- `voice_model?: string`\n Select the voice model used for the selected voice. Each provider has a set of available voice models. Set to null to remove voice model selection, and default ones will apply. Check out dashboard for more details of each voice model.\n\n- `voice_speed?: number`\n Controls speed of voice. Value ranging from [0.5,2]. Lower value means slower speech, while higher value means faster speech rate. If unset, default value 1 will apply.\n\n- `voice_temperature?: number`\n Controls how stable the voice is. Value ranging from [0,2]. Lower value means more stable, and higher value means more variant speech generation. Check the dashboard to see what provider supports this feature. If unset, default value 1 will apply.\n\n- `voicemail_detection_timeout_ms?: number`\n Configures when to stop running voicemail detection, as it becomes unlikely to hit voicemail after a couple minutes, and keep running it will only have negative impact. The minimum value allowed is 5,000 ms (5 s), and maximum value allowed is 180,000 (3 minutes). By default, this is set to 30,000 (30 s).\n\n- `voicemail_message?: string`\n The message to be played when the call enters a voicemail. Note that this feature is only available for phone calls. If you want to hangup after hitting voicemail, set this to empty string.\n\n- `voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }`\n If this option is set, the call will try to detect voicemail in the first 3 minutes of the call. Actions defined (hangup, or leave a message) will be applied when the voicemail is detected. Set this to null to disable voicemail detection.\n - `action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }`\n - `detection_prompt?: string`\n Optionally describe what should be treated as voicemail. Leave as null to use the default definition.\n\n- `volume?: number`\n If set, will control the volume of the agent. Value ranging from [0,2]. Lower value means quieter agent speech, while higher value means louder agent speech. If unset, default value 1 will apply.\n\n- `webhook_events?: string[]`\n Which webhook events this agent should receive. If not set, defaults to call_started, call_ended, call_analyzed.\n\n- `webhook_timeout_ms?: number`\n The timeout for the webhook in milliseconds. If not set, default value of 10000 will apply.\n\n- `webhook_url?: string`\n The webhook for agent to listen to call events. See what events it would get at [webhook doc](/features/webhook). If set, will binds webhook events for this agent to the specified url, and will ignore the account level webhook for this agent. Set to `null` to remove webhook url from this agent.\n\n### Returns\n\n- `{ agent_id: string; last_modification_timestamp: number; response_engine: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }; version: number; voice_id: string; agent_name?: string; allow_dtmf_interruption?: boolean; allow_user_dtmf?: boolean; ambient_sound?: string; ambient_sound_volume?: number; analysis_successful_prompt?: string; analysis_summary_prompt?: string; analysis_user_sentiment_prompt?: string; assigned_tags?: string[]; backchannel_frequency?: number; backchannel_words?: string[]; base_version?: number; begin_message_delay_ms?: number; boosted_keywords?: string[]; call_screening_option?: { agent_identity: string; call_purpose: string; }; custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }; data_storage_retention_days?: number; data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'; denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'; enable_backchannel?: boolean; enable_dynamic_responsiveness?: boolean; enable_dynamic_voice_speed?: boolean; end_call_after_silence_ms?: number; fallback_voice_ids?: string[]; guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }; handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }; interruption_sensitivity?: number; is_published?: boolean; ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }; language?: string | string[]; max_call_duration_ms?: number; opt_in_signed_url?: boolean; pii_config?: { categories: string[]; mode: 'post_call'; }; post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[]; post_call_analysis_model?: string; pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[]; reminder_max_count?: number; reminder_trigger_ms?: number; responsiveness?: number; ring_duration_ms?: number; signed_url_expiration_ms?: number; stt_mode?: 'fast' | 'accurate' | 'custom'; timezone?: string; user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }; version_description?: string; vocab_specialization?: 'general' | 'medical'; voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'; voice_model?: string; voice_speed?: number; voice_temperature?: number; voicemail_detection_timeout_ms?: number; voicemail_message?: string; voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }; volume?: number; webhook_events?: string[]; webhook_timeout_ms?: number; webhook_url?: string; }`\n\n - `agent_id: string`\n - `last_modification_timestamp: number`\n - `response_engine: { llm_id: string; type: 'retell-llm'; version?: number; } | { llm_websocket_url: string; type: 'custom-llm'; } | { conversation_flow_id: string; type: 'conversation-flow'; version?: number; }`\n - `version: number`\n - `voice_id: string`\n - `agent_name?: string`\n - `allow_dtmf_interruption?: boolean`\n - `allow_user_dtmf?: boolean`\n - `ambient_sound?: string`\n - `ambient_sound_volume?: number`\n - `analysis_successful_prompt?: string`\n - `analysis_summary_prompt?: string`\n - `analysis_user_sentiment_prompt?: string`\n - `assigned_tags?: string[]`\n - `backchannel_frequency?: number`\n - `backchannel_words?: string[]`\n - `base_version?: number`\n - `begin_message_delay_ms?: number`\n - `boosted_keywords?: string[]`\n - `call_screening_option?: { agent_identity: string; call_purpose: string; }`\n - `custom_stt_config?: { endpointing_ms: number; provider: 'azure' | 'deepgram' | 'soniox'; }`\n - `data_storage_retention_days?: number`\n - `data_storage_setting?: 'everything' | 'everything_except_pii' | 'basic_attributes_only'`\n - `denoising_mode?: 'no-denoise' | 'noise-cancellation' | 'noise-and-background-speech-cancellation'`\n - `enable_backchannel?: boolean`\n - `enable_dynamic_responsiveness?: boolean`\n - `enable_dynamic_voice_speed?: boolean`\n - `end_call_after_silence_ms?: number`\n - `fallback_voice_ids?: string[]`\n - `guardrail_config?: { input_topics?: 'platform_integrity_jailbreaking'[]; output_topics?: string[]; }`\n - `handbook_config?: { ai_disclosure?: boolean; default_personality?: boolean; echo_verification?: boolean; high_empathy?: boolean; nato_phonetic_alphabet?: boolean; natural_filler_words?: boolean; scope_boundaries?: boolean; smart_matching?: boolean; speech_normalization?: boolean; }`\n - `interruption_sensitivity?: number`\n - `is_published?: boolean`\n - `ivr_option?: { action: { type: 'hangup'; }; detection_prompt?: string; }`\n - `language?: string | string[]`\n - `max_call_duration_ms?: number`\n - `opt_in_signed_url?: boolean`\n - `pii_config?: { categories: string[]; mode: 'post_call'; }`\n - `post_call_analysis_data?: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; } | { name: 'call_summary' | 'call_successful' | 'user_sentiment'; type: 'system-presets'; conditional_prompt?: string; description?: string; required?: boolean; }[]`\n - `post_call_analysis_model?: string`\n - `pronunciation_dictionary?: { alphabet: 'ipa' | 'cmu'; phoneme: string; word: string; }[]`\n - `reminder_max_count?: number`\n - `reminder_trigger_ms?: number`\n - `responsiveness?: number`\n - `ring_duration_ms?: number`\n - `signed_url_expiration_ms?: number`\n - `stt_mode?: 'fast' | 'accurate' | 'custom'`\n - `timezone?: string`\n - `user_dtmf_options?: { digit_limit?: number; termination_key?: string; timeout_ms?: number; }`\n - `version_description?: string`\n - `vocab_specialization?: 'general' | 'medical'`\n - `voice_emotion?: 'calm' | 'sympathetic' | 'happy' | 'sad' | 'angry' | 'fearful' | 'surprised'`\n - `voice_model?: string`\n - `voice_speed?: number`\n - `voice_temperature?: number`\n - `voicemail_detection_timeout_ms?: number`\n - `voicemail_message?: string`\n - `voicemail_option?: { action: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { type: 'hangup'; } | { type: 'bridge_transfer'; }; detection_prompt?: string; }`\n - `volume?: number`\n - `webhook_events?: string[]`\n - `webhook_timeout_ms?: number`\n - `webhook_url?: string`\n\n### Example\n\n```typescript\nimport Retell from 'retell-sdk';\n\nconst client = new Retell();\n\nconst agentResponse = await client.agent.update('16b980523634a6dc504898cda492e939');\n\nconsole.log(agentResponse);\n```",
867
867
  perLanguage: {
868
868
  typescript: {
869
869
  method: 'client.agent.update',
870
870
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst agentResponse = await client.agent.update('16b980523634a6dc504898cda492e939', {\n agent_name: 'Jarvis',\n});\n\nconsole.log(agentResponse.agent_id);",
871
871
  },
872
+ http: {
873
+ example: 'curl https://api.retellai.com/update-agent/$AGENT_ID \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d "{\n \\"agent_name\\": \\"Jarvis\\",\n \\"allow_dtmf_interruption\\": false,\n \\"allow_user_dtmf\\": true,\n \\"ambient_sound_volume\\": 1,\n \\"analysis_successful_prompt\\": \\"The agent finished the task and the call was complete without being cutoff.\\",\n \\"analysis_summary_prompt\\": \\"Summarize the outcome of the conversation in two sentences.\\",\n \\"analysis_user_sentiment_prompt\\": \\"Evaluate the user\'s sentiment based on their tone and satisfaction level.\\",\n \\"backchannel_frequency\\": 0.9,\n \\"backchannel_words\\": [\n \\"yeah\\",\n \\"uh-huh\\"\n ],\n \\"begin_message_delay_ms\\": 1000,\n \\"boosted_keywords\\": [\n \\"retell\\",\n \\"kroger\\"\n ],\n \\"data_storage_retention_days\\": 30,\n \\"data_storage_setting\\": \\"everything\\",\n \\"denoising_mode\\": \\"noise-cancellation\\",\n \\"enable_backchannel\\": true,\n \\"enable_dynamic_responsiveness\\": true,\n \\"enable_dynamic_voice_speed\\": true,\n \\"end_call_after_silence_ms\\": 600000,\n \\"fallback_voice_ids\\": [\n \\"cartesia-Cimo\\",\n \\"minimax-Cimo\\"\n ],\n \\"interruption_sensitivity\\": 1,\n \\"ivr_option\\": {\n \\"action\\": {\n \\"type\\": \\"hangup\\"\n }\n },\n \\"max_call_duration_ms\\": 3600000,\n \\"opt_in_signed_url\\": true,\n \\"post_call_analysis_model\\": \\"gpt-4.1-mini\\",\n \\"reminder_max_count\\": 2,\n \\"reminder_trigger_ms\\": 10000,\n \\"response_engine\\": {\n \\"llm_id\\": \\"llm_234sdertfsdsfsdf\\",\n \\"type\\": \\"retell-llm\\",\n \\"version\\": 0\n },\n \\"responsiveness\\": 1,\n \\"ring_duration_ms\\": 30000,\n \\"signed_url_expiration_ms\\": 86400000,\n \\"stt_mode\\": \\"fast\\",\n \\"timezone\\": \\"America/New_York\\",\n \\"version_description\\": \\"Customer support agent for handling product inquiries\\",\n \\"vocab_specialization\\": \\"general\\",\n \\"voice_emotion\\": \\"calm\\",\n \\"voice_id\\": \\"retell-Cimo\\",\n \\"voice_speed\\": 1,\n \\"voice_temperature\\": 1,\n \\"voicemail_detection_timeout_ms\\": 30000,\n \\"voicemail_message\\": \\"Hi, please give us a callback.\\",\n \\"voicemail_option\\": {\n \\"action\\": {\n \\"text\\": \\"Please give us a callback tomorrow at 10am.\\",\n \\"type\\": \\"static_text\\"\n }\n },\n \\"volume\\": 1,\n \\"webhook_timeout_ms\\": 10000,\n \\"webhook_url\\": \\"https://webhook-url-here\\"\n }"',
874
+ },
872
875
  python: {
873
876
  method: 'agent.update',
874
877
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nagent_response = client.agent.update(\n agent_id="16b980523634a6dc504898cda492e939",\n agent_name="Jarvis",\n)\nprint(agent_response.agent_id)',
875
878
  },
876
- http: {
877
- example: 'curl https://api.retellai.com/update-agent/$AGENT_ID \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d "{\n \\"agent_name\\": \\"Jarvis\\",\n \\"allow_dtmf_interruption\\": false,\n \\"allow_user_dtmf\\": true,\n \\"ambient_sound_volume\\": 1,\n \\"analysis_successful_prompt\\": \\"The agent finished the task and the call was complete without being cutoff.\\",\n \\"analysis_summary_prompt\\": \\"Summarize the outcome of the conversation in two sentences.\\",\n \\"analysis_user_sentiment_prompt\\": \\"Evaluate the user\'s sentiment based on their tone and satisfaction level.\\",\n \\"backchannel_frequency\\": 0.9,\n \\"backchannel_words\\": [\n \\"yeah\\",\n \\"uh-huh\\"\n ],\n \\"begin_message_delay_ms\\": 1000,\n \\"boosted_keywords\\": [\n \\"retell\\",\n \\"kroger\\"\n ],\n \\"data_storage_retention_days\\": 30,\n \\"data_storage_setting\\": \\"everything\\",\n \\"denoising_mode\\": \\"noise-cancellation\\",\n \\"enable_backchannel\\": true,\n \\"enable_dynamic_responsiveness\\": true,\n \\"enable_dynamic_voice_speed\\": true,\n \\"end_call_after_silence_ms\\": 600000,\n \\"fallback_voice_ids\\": [\n \\"cartesia-Cimo\\",\n \\"minimax-Cimo\\"\n ],\n \\"interruption_sensitivity\\": 1,\n \\"ivr_option\\": {\n \\"action\\": {\n \\"type\\": \\"hangup\\"\n }\n },\n \\"max_call_duration_ms\\": 3600000,\n \\"opt_in_signed_url\\": true,\n \\"post_call_analysis_model\\": \\"gpt-4.1-mini\\",\n \\"reminder_max_count\\": 2,\n \\"reminder_trigger_ms\\": 10000,\n \\"response_engine\\": {\n \\"llm_id\\": \\"llm_234sdertfsdsfsdf\\",\n \\"type\\": \\"retell-llm\\",\n \\"version\\": 0\n },\n \\"responsiveness\\": 1,\n \\"ring_duration_ms\\": 30000,\n \\"signed_url_expiration_ms\\": 86400000,\n \\"stt_mode\\": \\"fast\\",\n \\"timezone\\": \\"America/New_York\\",\n \\"version_description\\": \\"Customer support agent for handling product inquiries\\",\n \\"vocab_specialization\\": \\"general\\",\n \\"voice_emotion\\": \\"calm\\",\n \\"voice_id\\": \\"retell-Cimo\\",\n \\"voice_speed\\": 1,\n \\"voice_temperature\\": 1,\n \\"voicemail_detection_timeout_ms\\": 30000,\n \\"voicemail_message\\": \\"Hi, please give us a callback.\\",\n \\"voicemail_option\\": {\n \\"action\\": {\n \\"text\\": \\"Please give us a callback tomorrow at 10am.\\",\n \\"type\\": \\"static_text\\"\n }\n },\n \\"volume\\": 1,\n \\"webhook_timeout_ms\\": 10000,\n \\"webhook_url\\": \\"https://webhook-url-here\\"\n }"',
878
- },
879
879
  },
880
880
  },
881
881
  {
@@ -893,13 +893,13 @@ const EMBEDDED_METHODS = [
893
893
  method: 'client.agent.delete',
894
894
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.agent.delete('oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD');",
895
895
  },
896
+ http: {
897
+ example: 'curl https://api.retellai.com/delete-agent/$AGENT_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
898
+ },
896
899
  python: {
897
900
  method: 'agent.delete',
898
901
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.agent.delete(\n "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n)',
899
902
  },
900
- http: {
901
- example: 'curl https://api.retellai.com/delete-agent/$AGENT_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
902
- },
903
903
  },
904
904
  },
905
905
  {
@@ -917,13 +917,13 @@ const EMBEDDED_METHODS = [
917
917
  method: 'client.agent.publish',
918
918
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.agent.publish('agent_xxx', { version: 15 });",
919
919
  },
920
+ http: {
921
+ example: 'curl https://api.retellai.com/publish-agent-version/$AGENT_ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "version": 15,\n "version_description": "Hotfix for transfer timeout"\n }\'',
922
+ },
920
923
  python: {
921
924
  method: 'agent.publish',
922
925
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.agent.publish(\n agent_id="agent_xxx",\n version=15,\n)',
923
926
  },
924
- http: {
925
- example: 'curl https://api.retellai.com/publish-agent-version/$AGENT_ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "version": 15,\n "version_description": "Hotfix for transfer timeout"\n }\'',
926
- },
927
927
  },
928
928
  },
929
929
  {
@@ -942,13 +942,13 @@ const EMBEDDED_METHODS = [
942
942
  method: 'client.agent.createVersion',
943
943
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.agent.createVersion('agent_xxx', { base_version: 12 });\n\nconsole.log(response);",
944
944
  },
945
+ http: {
946
+ example: 'curl https://api.retellai.com/create-agent-version/$AGENT_ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "base_version": 12\n }\'',
947
+ },
945
948
  python: {
946
949
  method: 'agent.create_version',
947
950
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nresponse = client.agent.create_version(\n agent_id="agent_xxx",\n base_version=12,\n)\nprint(response)',
948
951
  },
949
- http: {
950
- example: 'curl https://api.retellai.com/create-agent-version/$AGENT_ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "base_version": 12\n }\'',
951
- },
952
952
  },
953
953
  },
954
954
  {
@@ -966,13 +966,13 @@ const EMBEDDED_METHODS = [
966
966
  method: 'client.agent.deleteVersion',
967
967
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.agent.deleteVersion('agent_xxx', { version: 1 });",
968
968
  },
969
+ http: {
970
+ example: 'curl https://api.retellai.com/delete-agent-version/$AGENT_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
971
+ },
969
972
  python: {
970
973
  method: 'agent.delete_version',
971
974
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.agent.delete_version(\n agent_id="agent_xxx",\n version=1,\n)',
972
975
  },
973
- http: {
974
- example: 'curl https://api.retellai.com/delete-agent-version/$AGENT_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
975
- },
976
976
  },
977
977
  },
978
978
  {
@@ -991,13 +991,13 @@ const EMBEDDED_METHODS = [
991
991
  method: 'client.agent.getVersions',
992
992
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst agentResponses = await client.agent.getVersions('16b980523634a6dc504898cda492e939');\n\nconsole.log(agentResponses);",
993
993
  },
994
+ http: {
995
+ example: 'curl https://api.retellai.com/get-agent-versions/$AGENT_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
996
+ },
994
997
  python: {
995
998
  method: 'agent.get_versions',
996
999
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nagent_responses = client.agent.get_versions(\n "16b980523634a6dc504898cda492e939",\n)\nprint(agent_responses)',
997
1000
  },
998
- http: {
999
- example: 'curl https://api.retellai.com/get-agent-versions/$AGENT_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1000
- },
1001
1001
  },
1002
1002
  },
1003
1003
  {
@@ -1038,13 +1038,13 @@ const EMBEDDED_METHODS = [
1038
1038
  method: 'client.chatAgent.create',
1039
1039
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst chatAgentResponse = await client.chatAgent.create({\n response_engine: { llm_id: 'llm_234sdertfsdsfsdf', type: 'retell-llm' },\n});\n\nconsole.log(chatAgentResponse.agent_id);",
1040
1040
  },
1041
+ http: {
1042
+ example: 'curl https://api.retellai.com/create-chat-agent \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d "{\n \\"response_engine\\": {\n \\"llm_id\\": \\"llm_234sdertfsdsfsdf\\",\n \\"type\\": \\"retell-llm\\",\n \\"version\\": 0\n },\n \\"agent_name\\": \\"Jarvis\\",\n \\"analysis_successful_prompt\\": \\"The agent finished the task and the call was complete without being cutoff.\\",\n \\"analysis_summary_prompt\\": \\"Summarize the call in a few sentences.\\",\n \\"analysis_user_sentiment_prompt\\": \\"Evaluate the user\'s sentiment based on their tone and satisfaction level.\\",\n \\"auto_close_message\\": \\"Thank you for chatting. The conversation has ended.\\",\n \\"data_storage_retention_days\\": 30,\n \\"data_storage_setting\\": \\"everything\\",\n \\"end_chat_after_silence_ms\\": 3600000,\n \\"opt_in_signed_url\\": true,\n \\"post_chat_analysis_model\\": \\"gpt-4.1-mini\\",\n \\"signed_url_expiration_ms\\": 86400000,\n \\"timezone\\": \\"America/New_York\\",\n \\"webhook_timeout_ms\\": 10000,\n \\"webhook_url\\": \\"https://webhook-url-here\\"\n }"',
1043
+ },
1041
1044
  python: {
1042
1045
  method: 'chat_agent.create',
1043
1046
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nchat_agent_response = client.chat_agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n)\nprint(chat_agent_response.agent_id)',
1044
1047
  },
1045
- http: {
1046
- example: 'curl https://api.retellai.com/create-chat-agent \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d "{\n \\"response_engine\\": {\n \\"llm_id\\": \\"llm_234sdertfsdsfsdf\\",\n \\"type\\": \\"retell-llm\\",\n \\"version\\": 0\n },\n \\"agent_name\\": \\"Jarvis\\",\n \\"analysis_successful_prompt\\": \\"The agent finished the task and the call was complete without being cutoff.\\",\n \\"analysis_summary_prompt\\": \\"Summarize the call in a few sentences.\\",\n \\"analysis_user_sentiment_prompt\\": \\"Evaluate the user\'s sentiment based on their tone and satisfaction level.\\",\n \\"auto_close_message\\": \\"Thank you for chatting. The conversation has ended.\\",\n \\"data_storage_retention_days\\": 30,\n \\"data_storage_setting\\": \\"everything\\",\n \\"end_chat_after_silence_ms\\": 3600000,\n \\"opt_in_signed_url\\": true,\n \\"post_chat_analysis_model\\": \\"gpt-4.1-mini\\",\n \\"signed_url_expiration_ms\\": 86400000,\n \\"timezone\\": \\"America/New_York\\",\n \\"webhook_timeout_ms\\": 10000,\n \\"webhook_url\\": \\"https://webhook-url-here\\"\n }"',
1047
- },
1048
1048
  },
1049
1049
  },
1050
1050
  {
@@ -1063,13 +1063,13 @@ const EMBEDDED_METHODS = [
1063
1063
  method: 'client.chatAgent.retrieve',
1064
1064
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst chatAgentResponse = await client.chatAgent.retrieve('16b980523634a6dc504898cda492e939');\n\nconsole.log(chatAgentResponse.agent_id);",
1065
1065
  },
1066
+ http: {
1067
+ example: 'curl https://api.retellai.com/get-chat-agent/$AGENT_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1068
+ },
1066
1069
  python: {
1067
1070
  method: 'chat_agent.retrieve',
1068
1071
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nchat_agent_response = client.chat_agent.retrieve(\n agent_id="16b980523634a6dc504898cda492e939",\n)\nprint(chat_agent_response.agent_id)',
1069
1072
  },
1070
- http: {
1071
- example: 'curl https://api.retellai.com/get-chat-agent/$AGENT_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1072
- },
1073
1073
  },
1074
1074
  },
1075
1075
  {
@@ -1093,13 +1093,13 @@ const EMBEDDED_METHODS = [
1093
1093
  method: 'client.chatAgent.list',
1094
1094
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst chatAgentResponses = await client.chatAgent.list();\n\nconsole.log(chatAgentResponses);",
1095
1095
  },
1096
+ http: {
1097
+ example: 'curl https://api.retellai.com/list-chat-agents \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1098
+ },
1096
1099
  python: {
1097
1100
  method: 'chat_agent.list',
1098
1101
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nchat_agent_responses = client.chat_agent.list()\nprint(chat_agent_responses)',
1099
1102
  },
1100
- http: {
1101
- example: 'curl https://api.retellai.com/list-chat-agents \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1102
- },
1103
1103
  },
1104
1104
  },
1105
1105
  {
@@ -1142,13 +1142,13 @@ const EMBEDDED_METHODS = [
1142
1142
  method: 'client.chatAgent.update',
1143
1143
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst chatAgentResponse = await client.chatAgent.update('16b980523634a6dc504898cda492e939');\n\nconsole.log(chatAgentResponse.agent_id);",
1144
1144
  },
1145
+ http: {
1146
+ example: 'curl https://api.retellai.com/update-chat-agent/$AGENT_ID \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d "{\n \\"agent_name\\": \\"Jarvis\\",\n \\"analysis_successful_prompt\\": \\"The agent finished the task and the call was complete without being cutoff.\\",\n \\"analysis_summary_prompt\\": \\"Summarize the call in a few sentences.\\",\n \\"analysis_user_sentiment_prompt\\": \\"Evaluate the user\'s sentiment based on their tone and satisfaction level.\\",\n \\"auto_close_message\\": \\"Thank you for chatting. The conversation has ended.\\",\n \\"data_storage_retention_days\\": 30,\n \\"data_storage_setting\\": \\"everything\\",\n \\"end_chat_after_silence_ms\\": 3600000,\n \\"opt_in_signed_url\\": true,\n \\"post_chat_analysis_model\\": \\"gpt-4.1-mini\\",\n \\"response_engine\\": {\n \\"llm_id\\": \\"llm_234sdertfsdsfsdf\\",\n \\"type\\": \\"retell-llm\\",\n \\"version\\": 0\n },\n \\"signed_url_expiration_ms\\": 86400000,\n \\"timezone\\": \\"America/New_York\\",\n \\"webhook_timeout_ms\\": 10000,\n \\"webhook_url\\": \\"https://webhook-url-here\\"\n }"',
1147
+ },
1145
1148
  python: {
1146
1149
  method: 'chat_agent.update',
1147
1150
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nchat_agent_response = client.chat_agent.update(\n agent_id="16b980523634a6dc504898cda492e939",\n)\nprint(chat_agent_response.agent_id)',
1148
1151
  },
1149
- http: {
1150
- example: 'curl https://api.retellai.com/update-chat-agent/$AGENT_ID \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d "{\n \\"agent_name\\": \\"Jarvis\\",\n \\"analysis_successful_prompt\\": \\"The agent finished the task and the call was complete without being cutoff.\\",\n \\"analysis_summary_prompt\\": \\"Summarize the call in a few sentences.\\",\n \\"analysis_user_sentiment_prompt\\": \\"Evaluate the user\'s sentiment based on their tone and satisfaction level.\\",\n \\"auto_close_message\\": \\"Thank you for chatting. The conversation has ended.\\",\n \\"data_storage_retention_days\\": 30,\n \\"data_storage_setting\\": \\"everything\\",\n \\"end_chat_after_silence_ms\\": 3600000,\n \\"opt_in_signed_url\\": true,\n \\"post_chat_analysis_model\\": \\"gpt-4.1-mini\\",\n \\"response_engine\\": {\n \\"llm_id\\": \\"llm_234sdertfsdsfsdf\\",\n \\"type\\": \\"retell-llm\\",\n \\"version\\": 0\n },\n \\"signed_url_expiration_ms\\": 86400000,\n \\"timezone\\": \\"America/New_York\\",\n \\"webhook_timeout_ms\\": 10000,\n \\"webhook_url\\": \\"https://webhook-url-here\\"\n }"',
1151
- },
1152
1152
  },
1153
1153
  },
1154
1154
  {
@@ -1166,13 +1166,13 @@ const EMBEDDED_METHODS = [
1166
1166
  method: 'client.chatAgent.delete',
1167
1167
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.chatAgent.delete('oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD');",
1168
1168
  },
1169
+ http: {
1170
+ example: 'curl https://api.retellai.com/delete-chat-agent/$AGENT_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1171
+ },
1169
1172
  python: {
1170
1173
  method: 'chat_agent.delete',
1171
1174
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.chat_agent.delete(\n "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n)',
1172
1175
  },
1173
- http: {
1174
- example: 'curl https://api.retellai.com/delete-chat-agent/$AGENT_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1175
- },
1176
1176
  },
1177
1177
  },
1178
1178
  {
@@ -1190,13 +1190,13 @@ const EMBEDDED_METHODS = [
1190
1190
  method: 'client.chatAgent.publish',
1191
1191
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.chatAgent.publish('agent_xxx', { version: 15 });",
1192
1192
  },
1193
+ http: {
1194
+ example: 'curl https://api.retellai.com/publish-agent-version/$AGENT_ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "version": 15,\n "version_description": "Hotfix for transfer timeout"\n }\'',
1195
+ },
1193
1196
  python: {
1194
1197
  method: 'chat_agent.publish',
1195
1198
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.chat_agent.publish(\n agent_id="agent_xxx",\n version=15,\n)',
1196
1199
  },
1197
- http: {
1198
- example: 'curl https://api.retellai.com/publish-agent-version/$AGENT_ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "version": 15,\n "version_description": "Hotfix for transfer timeout"\n }\'',
1199
- },
1200
1200
  },
1201
1201
  },
1202
1202
  {
@@ -1215,13 +1215,13 @@ const EMBEDDED_METHODS = [
1215
1215
  method: 'client.chatAgent.createVersion',
1216
1216
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.chatAgent.createVersion('agent_xxx', { base_version: 12 });\n\nconsole.log(response);",
1217
1217
  },
1218
+ http: {
1219
+ example: 'curl https://api.retellai.com/create-agent-version/$AGENT_ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "base_version": 12\n }\'',
1220
+ },
1218
1221
  python: {
1219
1222
  method: 'chat_agent.create_version',
1220
1223
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nresponse = client.chat_agent.create_version(\n agent_id="agent_xxx",\n base_version=12,\n)\nprint(response)',
1221
1224
  },
1222
- http: {
1223
- example: 'curl https://api.retellai.com/create-agent-version/$AGENT_ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "base_version": 12\n }\'',
1224
- },
1225
1225
  },
1226
1226
  },
1227
1227
  {
@@ -1239,13 +1239,13 @@ const EMBEDDED_METHODS = [
1239
1239
  method: 'client.chatAgent.deleteVersion',
1240
1240
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.chatAgent.deleteVersion('agent_xxx', { version: 1 });",
1241
1241
  },
1242
+ http: {
1243
+ example: 'curl https://api.retellai.com/delete-agent-version/$AGENT_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1244
+ },
1242
1245
  python: {
1243
1246
  method: 'chat_agent.delete_version',
1244
1247
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.chat_agent.delete_version(\n agent_id="agent_xxx",\n version=1,\n)',
1245
1248
  },
1246
- http: {
1247
- example: 'curl https://api.retellai.com/delete-agent-version/$AGENT_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1248
- },
1249
1249
  },
1250
1250
  },
1251
1251
  {
@@ -1264,13 +1264,13 @@ const EMBEDDED_METHODS = [
1264
1264
  method: 'client.chatAgent.getVersions',
1265
1265
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst chatAgentResponses = await client.chatAgent.getVersions('16b980523634a6dc504898cda492e939');\n\nconsole.log(chatAgentResponses);",
1266
1266
  },
1267
+ http: {
1268
+ example: 'curl https://api.retellai.com/get-chat-agent-versions/$AGENT_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1269
+ },
1267
1270
  python: {
1268
1271
  method: 'chat_agent.get_versions',
1269
1272
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nchat_agent_responses = client.chat_agent.get_versions(\n "16b980523634a6dc504898cda492e939",\n)\nprint(chat_agent_responses)',
1270
1273
  },
1271
- http: {
1272
- example: 'curl https://api.retellai.com/get-chat-agent-versions/$AGENT_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1273
- },
1274
1274
  },
1275
1275
  },
1276
1276
  {
@@ -1306,13 +1306,13 @@ const EMBEDDED_METHODS = [
1306
1306
  method: 'client.llm.create',
1307
1307
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst llmResponse = await client.llm.create();\n\nconsole.log(llmResponse.llm_id);",
1308
1308
  },
1309
+ http: {
1310
+ example: 'curl https://api.retellai.com/create-retell-llm \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "begin_after_user_silence_ms": 2000,\n "begin_message": "Hey I am a virtual assistant calling from Retell Hospital.",\n "default_dynamic_variables": {\n "customer_name": "John Doe"\n },\n "general_prompt": "You are ...",\n "general_tools": [\n {\n "name": "end_call",\n "type": "end_call",\n "description": "End the call with user."\n }\n ],\n "model": "gpt-4.1",\n "model_high_priority": true,\n "model_temperature": 0,\n "s2s_model": "gpt-realtime-1.5",\n "starting_state": "information_collection",\n "states": [\n {\n "name": "information_collection",\n "edges": [\n {\n "description": "Transition to book an appointment.",\n "destination_state_name": "appointment_booking"\n }\n ],\n "state_prompt": "You will follow the steps below to collect information...",\n "tools": [\n {\n "name": "transfer_to_support",\n "transfer_destination": {\n "number": "16175551212",\n "type": "predefined"\n },\n "transfer_option": {\n "type": "cold_transfer",\n "show_transferee_as_caller": false\n },\n "type": "transfer_call",\n "description": "Transfer to the support team."\n }\n ]\n },\n {\n "name": "appointment_booking",\n "state_prompt": "You will follow the steps below to book an appointment...",\n "tools": [\n {\n "cal_api_key": "cal_live_xxxxxxxxxxxx",\n "event_type_id": 60444,\n "name": "book_appointment",\n "type": "book_appointment_cal",\n "description": "Book an annual check up.",\n "timezone": "America/Los_Angeles"\n }\n ]\n }\n ],\n "tool_call_strict_mode": true\n }\'',
1311
+ },
1309
1312
  python: {
1310
1313
  method: 'llm.create',
1311
1314
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nllm_response = client.llm.create()\nprint(llm_response.llm_id)',
1312
1315
  },
1313
- http: {
1314
- example: 'curl https://api.retellai.com/create-retell-llm \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "begin_after_user_silence_ms": 2000,\n "begin_message": "Hey I am a virtual assistant calling from Retell Hospital.",\n "default_dynamic_variables": {\n "customer_name": "John Doe"\n },\n "general_prompt": "You are ...",\n "general_tools": [\n {\n "name": "end_call",\n "type": "end_call",\n "description": "End the call with user."\n }\n ],\n "model": "gpt-4.1",\n "model_high_priority": true,\n "model_temperature": 0,\n "s2s_model": "gpt-realtime-1.5",\n "starting_state": "information_collection",\n "states": [\n {\n "name": "information_collection",\n "edges": [\n {\n "description": "Transition to book an appointment.",\n "destination_state_name": "appointment_booking"\n }\n ],\n "state_prompt": "You will follow the steps below to collect information...",\n "tools": [\n {\n "name": "transfer_to_support",\n "transfer_destination": {\n "number": "16175551212",\n "type": "predefined"\n },\n "transfer_option": {\n "type": "cold_transfer",\n "show_transferee_as_caller": false\n },\n "type": "transfer_call",\n "description": "Transfer to the support team."\n }\n ]\n },\n {\n "name": "appointment_booking",\n "state_prompt": "You will follow the steps below to book an appointment...",\n "tools": [\n {\n "cal_api_key": "cal_live_xxxxxxxxxxxx",\n "event_type_id": 60444,\n "name": "book_appointment",\n "type": "book_appointment_cal",\n "description": "Book an annual check up.",\n "timezone": "America/Los_Angeles"\n }\n ]\n }\n ],\n "tool_call_strict_mode": true\n }\'',
1315
- },
1316
1316
  },
1317
1317
  },
1318
1318
  {
@@ -1331,13 +1331,13 @@ const EMBEDDED_METHODS = [
1331
1331
  method: 'client.llm.retrieve',
1332
1332
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst llmResponse = await client.llm.retrieve('16b980523634a6dc504898cda492e939');\n\nconsole.log(llmResponse.llm_id);",
1333
1333
  },
1334
+ http: {
1335
+ example: 'curl https://api.retellai.com/get-retell-llm/$LLM_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1336
+ },
1334
1337
  python: {
1335
1338
  method: 'llm.retrieve',
1336
1339
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nllm_response = client.llm.retrieve(\n llm_id="16b980523634a6dc504898cda492e939",\n)\nprint(llm_response.llm_id)',
1337
1340
  },
1338
- http: {
1339
- example: 'curl https://api.retellai.com/get-retell-llm/$LLM_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1340
- },
1341
1341
  },
1342
1342
  },
1343
1343
  {
@@ -1356,13 +1356,13 @@ const EMBEDDED_METHODS = [
1356
1356
  method: 'client.llm.list',
1357
1357
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst llms = await client.llm.list();\n\nconsole.log(llms.has_more);",
1358
1358
  },
1359
+ http: {
1360
+ example: 'curl https://api.retellai.com/v2/list-retell-llms \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1361
+ },
1359
1362
  python: {
1360
1363
  method: 'llm.list',
1361
1364
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nllms = client.llm.list()\nprint(llms.has_more)',
1362
1365
  },
1363
- http: {
1364
- example: 'curl https://api.retellai.com/v2/list-retell-llms \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1365
- },
1366
1366
  },
1367
1367
  },
1368
1368
  {
@@ -1400,13 +1400,13 @@ const EMBEDDED_METHODS = [
1400
1400
  method: 'client.llm.update',
1401
1401
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst llmResponse = await client.llm.update('16b980523634a6dc504898cda492e939', {\n begin_message: 'Hey I am a virtual assistant calling from Retell Hospital.',\n});\n\nconsole.log(llmResponse.llm_id);",
1402
1402
  },
1403
+ http: {
1404
+ example: 'curl https://api.retellai.com/update-retell-llm/$LLM_ID \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "begin_after_user_silence_ms": 2000,\n "begin_message": "Hey I am a virtual assistant calling from Retell Hospital.",\n "default_dynamic_variables": {\n "customer_name": "John Doe"\n },\n "general_prompt": "You are ...",\n "general_tools": [\n {\n "name": "end_call",\n "type": "end_call",\n "description": "End the call with user."\n }\n ],\n "model": "gpt-4.1",\n "model_high_priority": true,\n "model_temperature": 0,\n "s2s_model": "gpt-realtime-1.5",\n "starting_state": "information_collection",\n "states": [\n {\n "name": "information_collection",\n "edges": [\n {\n "description": "Transition to book an appointment.",\n "destination_state_name": "appointment_booking"\n }\n ],\n "state_prompt": "You will follow the steps below to collect information...",\n "tools": [\n {\n "name": "transfer_to_support",\n "transfer_destination": {\n "number": "16175551212",\n "type": "predefined"\n },\n "transfer_option": {\n "type": "cold_transfer",\n "show_transferee_as_caller": false\n },\n "type": "transfer_call",\n "description": "Transfer to the support team."\n }\n ]\n },\n {\n "name": "appointment_booking",\n "state_prompt": "You will follow the steps below to book an appointment...",\n "tools": [\n {\n "cal_api_key": "cal_live_xxxxxxxxxxxx",\n "event_type_id": 60444,\n "name": "book_appointment",\n "type": "book_appointment_cal",\n "description": "Book an annual check up.",\n "timezone": "America/Los_Angeles"\n }\n ]\n }\n ],\n "tool_call_strict_mode": true\n }\'',
1405
+ },
1403
1406
  python: {
1404
1407
  method: 'llm.update',
1405
1408
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nllm_response = client.llm.update(\n llm_id="16b980523634a6dc504898cda492e939",\n begin_message="Hey I am a virtual assistant calling from Retell Hospital.",\n)\nprint(llm_response.llm_id)',
1406
1409
  },
1407
- http: {
1408
- example: 'curl https://api.retellai.com/update-retell-llm/$LLM_ID \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "begin_after_user_silence_ms": 2000,\n "begin_message": "Hey I am a virtual assistant calling from Retell Hospital.",\n "default_dynamic_variables": {\n "customer_name": "John Doe"\n },\n "general_prompt": "You are ...",\n "general_tools": [\n {\n "name": "end_call",\n "type": "end_call",\n "description": "End the call with user."\n }\n ],\n "model": "gpt-4.1",\n "model_high_priority": true,\n "model_temperature": 0,\n "s2s_model": "gpt-realtime-1.5",\n "starting_state": "information_collection",\n "states": [\n {\n "name": "information_collection",\n "edges": [\n {\n "description": "Transition to book an appointment.",\n "destination_state_name": "appointment_booking"\n }\n ],\n "state_prompt": "You will follow the steps below to collect information...",\n "tools": [\n {\n "name": "transfer_to_support",\n "transfer_destination": {\n "number": "16175551212",\n "type": "predefined"\n },\n "transfer_option": {\n "type": "cold_transfer",\n "show_transferee_as_caller": false\n },\n "type": "transfer_call",\n "description": "Transfer to the support team."\n }\n ]\n },\n {\n "name": "appointment_booking",\n "state_prompt": "You will follow the steps below to book an appointment...",\n "tools": [\n {\n "cal_api_key": "cal_live_xxxxxxxxxxxx",\n "event_type_id": 60444,\n "name": "book_appointment",\n "type": "book_appointment_cal",\n "description": "Book an annual check up.",\n "timezone": "America/Los_Angeles"\n }\n ]\n }\n ],\n "tool_call_strict_mode": true\n }\'',
1409
- },
1410
1410
  },
1411
1411
  },
1412
1412
  {
@@ -1424,13 +1424,13 @@ const EMBEDDED_METHODS = [
1424
1424
  method: 'client.llm.delete',
1425
1425
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.llm.delete('oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD');",
1426
1426
  },
1427
+ http: {
1428
+ example: 'curl https://api.retellai.com/delete-retell-llm/$LLM_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1429
+ },
1427
1430
  python: {
1428
1431
  method: 'llm.delete',
1429
1432
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.llm.delete(\n "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n)',
1430
1433
  },
1431
- http: {
1432
- example: 'curl https://api.retellai.com/delete-retell-llm/$LLM_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1433
- },
1434
1434
  },
1435
1435
  },
1436
1436
  {
@@ -1468,13 +1468,13 @@ const EMBEDDED_METHODS = [
1468
1468
  method: 'client.conversationFlow.create',
1469
1469
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst conversationFlowResponse = await client.conversationFlow.create({\n model_choice: { model: 'gpt-4.1', type: 'cascading' },\n nodes: [\n {\n id: 'start',\n instruction: { text: 'Greet the customer and ask how you can help them.', type: 'prompt' },\n type: 'conversation',\n },\n ],\n start_speaker: 'agent',\n});\n\nconsole.log(conversationFlowResponse.conversation_flow_id);",
1470
1470
  },
1471
+ http: {
1472
+ example: 'curl https://api.retellai.com/create-conversation-flow \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "model_choice": {\n "model": "gpt-4.1",\n "type": "cascading"\n },\n "nodes": [\n {\n "id": "start",\n "instruction": {\n "text": "Greet the customer and ask how you can help them.",\n "type": "prompt"\n },\n "type": "conversation",\n "edges": [\n {\n "id": "edge_1",\n "transition_condition": {\n "prompt": "Customer wants to book appointment",\n "type": "prompt"\n },\n "destination_node_id": "book_appointment"\n }\n ]\n }\n ],\n "start_speaker": "agent",\n "begin_after_user_silence_ms": 2000,\n "default_dynamic_variables": {\n "company_name": "Retell Inc",\n "support_hours": "9 AM - 5 PM"\n },\n "flex_mode": false,\n "global_prompt": "You are a helpful customer service agent.",\n "is_transfer_llm": false,\n "knowledge_base_ids": [\n "kb_001",\n "kb_002"\n ],\n "model_temperature": 0.7,\n "start_node_id": "start",\n "tool_call_strict_mode": true,\n "tools": [\n {\n "name": "get_customer_info",\n "type": "custom",\n "url": "https://api.example.com/customer",\n "description": "Get customer information from database",\n "method": "GET",\n "tool_id": "tool_001"\n }\n ]\n }\'',
1473
+ },
1471
1474
  python: {
1472
1475
  method: 'conversation_flow.create',
1473
1476
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nconversation_flow_response = client.conversation_flow.create(\n model_choice={\n "model": "gpt-4.1",\n "type": "cascading",\n },\n nodes=[{\n "id": "start",\n "instruction": {\n "text": "Greet the customer and ask how you can help them.",\n "type": "prompt",\n },\n "type": "conversation",\n }],\n start_speaker="agent",\n)\nprint(conversation_flow_response.conversation_flow_id)',
1474
1477
  },
1475
- http: {
1476
- example: 'curl https://api.retellai.com/create-conversation-flow \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "model_choice": {\n "model": "gpt-4.1",\n "type": "cascading"\n },\n "nodes": [\n {\n "id": "start",\n "instruction": {\n "text": "Greet the customer and ask how you can help them.",\n "type": "prompt"\n },\n "type": "conversation",\n "edges": [\n {\n "id": "edge_1",\n "transition_condition": {\n "prompt": "Customer wants to book appointment",\n "type": "prompt"\n },\n "destination_node_id": "book_appointment"\n }\n ]\n }\n ],\n "start_speaker": "agent",\n "begin_after_user_silence_ms": 2000,\n "default_dynamic_variables": {\n "company_name": "Retell Inc",\n "support_hours": "9 AM - 5 PM"\n },\n "flex_mode": false,\n "global_prompt": "You are a helpful customer service agent.",\n "is_transfer_llm": false,\n "knowledge_base_ids": [\n "kb_001",\n "kb_002"\n ],\n "model_temperature": 0.7,\n "start_node_id": "start",\n "tool_call_strict_mode": true,\n "tools": [\n {\n "name": "get_customer_info",\n "type": "custom",\n "url": "https://api.example.com/customer",\n "description": "Get customer information from database",\n "method": "GET",\n "tool_id": "tool_001"\n }\n ]\n }\'',
1477
- },
1478
1478
  },
1479
1479
  },
1480
1480
  {
@@ -1487,19 +1487,19 @@ const EMBEDDED_METHODS = [
1487
1487
  qualified: 'client.conversationFlow.retrieve',
1488
1488
  params: ['conversation_flow_id: string;', 'version?: number;'],
1489
1489
  response: "{ conversation_flow_id: string; version: number; begin_after_user_silence_ms?: number; begin_tag_display_position?: object; components?: object[]; default_dynamic_variables?: object; flex_mode?: boolean; global_prompt?: string; is_transfer_llm?: boolean; kb_config?: object; knowledge_base_ids?: string[]; mcps?: object[]; model_choice?: object; model_temperature?: number; nodes?: object | object | object | object | object | object | object | object | object | object | object | object | object | object | object[]; notes?: object[]; start_node_id?: string; start_speaker?: 'user' | 'agent'; tool_call_strict_mode?: boolean; tools?: object | object | object[]; }",
1490
- markdown: "## retrieve\n\n`client.conversationFlow.retrieve(conversation_flow_id: string, version?: number): { conversation_flow_id: string; version: number; begin_after_user_silence_ms?: number; begin_tag_display_position?: object; components?: object[]; default_dynamic_variables?: object; flex_mode?: boolean; global_prompt?: string; is_transfer_llm?: boolean; kb_config?: object; knowledge_base_ids?: string[]; mcps?: object[]; model_choice?: object; model_temperature?: number; nodes?: object | object | object | object | object | object | object | object | object | object | object | object | object | object | object[]; notes?: object[]; start_node_id?: string; start_speaker?: 'user' | 'agent'; tool_call_strict_mode?: boolean; tools?: object | object | object[]; }`\n\n**get** `/get-conversation-flow/{conversation_flow_id}`\n\nRetrieve details of a specific Conversation Flow\n\n### Parameters\n\n- `conversation_flow_id: string`\n\n- `version?: number`\n Optional version of the conversation flow to retrieve. Default to latest version.\n\n### Returns\n\n- `{ conversation_flow_id: string; version: number; begin_after_user_silence_ms?: number; begin_tag_display_position?: { x?: number; y?: number; }; components?: { name: string; nodes: { id: string; instruction: object | object; type: 'conversation'; allow_dtmf_interruption?: boolean; always_edge?: object; display_position?: object; edges?: object[]; finetune_conversation_examples?: object[]; finetune_transition_examples?: object[]; global_node_setting?: object; interruption_sensitivity?: number; kb_config?: object; knowledge_base_ids?: string[]; model_choice?: object; name?: string; responsiveness?: number; skip_response_edge?: object; voice_speed?: number; } | { id: string; instruction: object; type: 'subagent'; allow_dtmf_interruption?: boolean; always_edge?: object; display_position?: object; edges?: object[]; finetune_conversation_examples?: object[]; finetune_transition_examples?: object[]; global_node_setting?: object; interruption_sensitivity?: number; kb_config?: object; knowledge_base_ids?: string[]; model_choice?: object; name?: string; responsiveness?: number; skip_response_edge?: object; tool_ids?: string[]; tools?: object | object | object | object | object | object | object | object | object | object | object | object | object[]; voice_speed?: number; } | { id: string; type: 'end'; display_position?: object; global_node_setting?: object; instruction?: object | object; model_choice?: object; name?: string; speak_during_execution?: boolean; } | { id: string; tool_id: string; tool_type: 'local' | 'shared'; type: 'function'; wait_for_result: boolean; display_position?: object; edges?: object[]; else_edge?: object; enable_typing_sound?: boolean; finetune_transition_examples?: object[]; global_node_setting?: object; instruction?: object | object; model_choice?: object; name?: string; speak_during_execution?: boolean; } | { id: string; code: string; type: 'code'; wait_for_result: boolean; display_position?: object; edges?: object[]; else_edge?: object; enable_typing_sound?: boolean; finetune_transition_examples?: object[]; global_node_setting?: object; instruction?: object | object; model_choice?: object; name?: string; response_variables?: object; speak_during_execution?: boolean; timeout_ms?: number; } | { id: string; edge: object; transfer_destination: object | object; transfer_option: object | object | object; type: 'transfer_call'; custom_sip_headers?: object; display_position?: object; global_node_setting?: object; ignore_e164_validation?: boolean; instruction?: object | object; model_choice?: object; name?: string; speak_during_execution?: boolean; } | { id: string; instruction: object; type: 'press_digit'; delay_ms?: number; display_position?: object; edges?: object[]; finetune_transition_examples?: object[]; global_node_setting?: object; model_choice?: object; name?: string; } | { id: string; else_edge: object; type: 'branch'; display_position?: object; edges?: object[]; finetune_transition_examples?: object[]; global_node_setting?: object; model_choice?: object; name?: string; } | { id: string; failed_edge: object; instruction: object | object | object; success_edge: object; type: 'sms'; display_position?: object; global_node_setting?: object; model_choice?: object; name?: string; } | { id: string; type: 'extract_dynamic_variables'; variables: object | object | object | object[]; display_position?: object; edges?: object[]; else_edge?: object; enable_typing_sound?: boolean; finetune_transition_examples?: object[]; global_node_setting?: object; model_choice?: object; name?: string; } | { id: string; agent_id: string; edge: object; post_call_analysis_setting: 'both_agents' | 'only_destination_agent'; type: 'agent_swap'; agent_version?: number | string; display_position?: object; global_node_setting?: object; instruction?: object | object; keep_current_language?: boolean; keep_current_voice?: boolean; model_choice?: object; name?: string; speak_during_execution?: boolean; webhook_setting?: 'both_agents' | 'only_destination_agent' | 'only_source_agent'; } | { id: string; mcp_id: string; mcp_tool_name: string; type: 'mcp'; wait_for_result: boolean; display_position?: object; edges?: object[]; else_edge?: object; enable_typing_sound?: boolean; finetune_transition_examples?: object[]; global_node_setting?: object; instruction?: object | object; model_choice?: object; name?: string; response_variables?: object; speak_during_execution?: boolean; } | { id: string; component_id: string; component_type: 'local' | 'shared'; else_edge: object; type: 'component'; display_position?: object; edges?: object[]; finetune_transition_examples?: object[]; global_node_setting?: object; name?: string; } | { id: string; type: 'bridge_transfer'; display_position?: object; global_node_setting?: object; instruction?: object | object; model_choice?: object; name?: string; speak_during_execution?: boolean; } | { id: string; type: 'cancel_transfer'; display_position?: object; global_node_setting?: object; instruction?: object | object; model_choice?: object; name?: string; speak_during_execution?: boolean; }[]; begin_tag_display_position?: { x?: number; y?: number; }; flex_mode?: boolean; mcps?: { name: string; url: string; headers?: object; query_params?: object; timeout_ms?: number; }[]; notes?: { id: string; content: string; display_position: object; size: object; }[]; start_node_id?: string; tools?: { name: string; type: 'custom'; url: string; args_at_root?: boolean; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; headers?: object; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; parameters?: object; query_params?: object; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'check_availability_cal'; description?: string; timezone?: string; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'book_appointment_cal'; description?: string; timezone?: string; tool_id?: string; }[]; }[]; default_dynamic_variables?: object; flex_mode?: boolean; global_prompt?: string; is_transfer_llm?: boolean; kb_config?: { filter_score?: number; top_k?: number; }; knowledge_base_ids?: string[]; mcps?: { name: string; url: string; headers?: object; query_params?: object; timeout_ms?: number; }[]; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; model_temperature?: number; nodes?: { id: string; instruction: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; type: 'conversation'; allow_dtmf_interruption?: boolean; always_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; finetune_conversation_examples?: { id: string; transcript: object | object | object[]; }[]; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; interruption_sensitivity?: number; kb_config?: { filter_score?: number; top_k?: number; }; knowledge_base_ids?: string[]; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; responsiveness?: number; skip_response_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; voice_speed?: number; } | { id: string; instruction: { text: string; type: 'prompt'; }; type: 'subagent'; allow_dtmf_interruption?: boolean; always_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; finetune_conversation_examples?: { id: string; transcript: object | object | object[]; }[]; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; interruption_sensitivity?: number; kb_config?: { filter_score?: number; top_k?: number; }; knowledge_base_ids?: string[]; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; responsiveness?: number; skip_response_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; tool_ids?: string[]; tools?: { name: string; type: 'end_call'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; transfer_destination: object | object; transfer_option: object | object | object; type: 'transfer_call'; custom_sip_headers?: object; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; ignore_e164_validation?: boolean; speak_during_execution?: boolean; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'check_availability_cal'; description?: string; timezone?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'book_appointment_cal'; description?: string; timezone?: string; } | { agent_id: string; name: string; post_call_analysis_setting: 'both_agents' | 'only_destination_agent'; type: 'agent_swap'; agent_version?: number | string; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; keep_current_language?: boolean; keep_current_voice?: boolean; speak_during_execution?: boolean; webhook_setting?: 'both_agents' | 'only_destination_agent' | 'only_source_agent'; } | { name: string; type: 'press_digit'; delay_ms?: number; description?: string; } | { name: string; sms_content: object | object | object; type: 'send_sms'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; type: 'custom'; url: string; args_at_root?: boolean; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; headers?: object; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; parameters?: object; query_params?: object; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; } | { code: string; name: string; type: 'code'; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; } | { description: string; name: string; type: 'extract_dynamic_variable'; variables: object | object | object | object[]; enable_typing_sound?: boolean; } | { name: string; type: 'bridge_transfer'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; type: 'cancel_transfer'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { description: string; name: string; type: 'mcp'; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; input_schema?: object; mcp_id?: string; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; }[]; voice_speed?: number; } | { id: string; type: 'end'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; tool_id: string; tool_type: 'local' | 'shared'; type: 'function'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; code: string; type: 'code'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; response_variables?: object; speak_during_execution?: boolean; timeout_ms?: number; } | { id: string; edge: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; transfer_destination: { number: string; type: 'predefined'; extension?: string; } | { prompt: string; type: 'inferred'; }; transfer_option: { type: 'cold_transfer'; cold_transfer_mode?: 'sip_refer' | 'sip_invite'; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { type: 'warm_transfer'; agent_detection_timeout_ms?: number; enable_bridge_audio_cue?: boolean; ivr_option?: object; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; opt_out_human_detection?: boolean; private_handoff_option?: object | object; public_handoff_option?: object | object; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { agentic_transfer_config: object; type: 'agentic_warm_transfer'; enable_bridge_audio_cue?: boolean; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; public_handoff_option?: object | object; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; }; type: 'transfer_call'; custom_sip_headers?: object; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; ignore_e164_validation?: boolean; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; instruction: { text: string; type: 'prompt'; }; type: 'press_digit'; delay_ms?: number; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; else_edge: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; type: 'branch'; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; failed_edge: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; instruction: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { template: 'info_collection'; type: 'template'; }; success_edge: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; type: 'sms'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; type: 'extract_dynamic_variables'; variables: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; }[]; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; agent_id: string; edge: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; post_call_analysis_setting: 'both_agents' | 'only_destination_agent'; type: 'agent_swap'; agent_version?: number | string; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; keep_current_language?: boolean; keep_current_voice?: boolean; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; webhook_setting?: 'both_agents' | 'only_destination_agent' | 'only_source_agent'; } | { id: string; mcp_id: string; mcp_tool_name: string; type: 'mcp'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; response_variables?: object; speak_during_execution?: boolean; } | { id: string; component_id: string; component_type: 'local' | 'shared'; else_edge: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; type: 'component'; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; name?: string; } | { id: string; type: 'bridge_transfer'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; type: 'cancel_transfer'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; }[]; notes?: { id: string; content: string; display_position: { x?: number; y?: number; }; size: { height?: number; width?: number; }; }[]; start_node_id?: string; start_speaker?: 'user' | 'agent'; tool_call_strict_mode?: boolean; tools?: { name: string; type: 'custom'; url: string; args_at_root?: boolean; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; headers?: object; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; parameters?: { properties: object; type: 'object'; required?: string[]; }; query_params?: object; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'check_availability_cal'; description?: string; timezone?: string; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'book_appointment_cal'; description?: string; timezone?: string; tool_id?: string; }[]; }`\n\n - `conversation_flow_id: string`\n - `version: number`\n - `begin_after_user_silence_ms?: number`\n - `begin_tag_display_position?: { x?: number; y?: number; }`\n - `components?: { name: string; nodes: { id: string; instruction: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; type: 'conversation'; allow_dtmf_interruption?: boolean; always_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Always'; } | { prompt: 'Always'; type: 'prompt'; }; destination_node_id?: string; }; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_conversation_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; interruption_sensitivity?: number; kb_config?: { filter_score?: number; top_k?: number; }; knowledge_base_ids?: string[]; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; responsiveness?: number; skip_response_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Skip response'; } | { prompt: 'Skip response'; type: 'prompt'; }; destination_node_id?: string; }; voice_speed?: number; } | { id: string; instruction: { text: string; type: 'prompt'; }; type: 'subagent'; allow_dtmf_interruption?: boolean; always_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Always'; } | { prompt: 'Always'; type: 'prompt'; }; destination_node_id?: string; }; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_conversation_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; interruption_sensitivity?: number; kb_config?: { filter_score?: number; top_k?: number; }; knowledge_base_ids?: string[]; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; responsiveness?: number; skip_response_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Skip response'; } | { prompt: 'Skip response'; type: 'prompt'; }; destination_node_id?: string; }; tool_ids?: string[]; tools?: { name: string; type: 'end_call'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; transfer_destination: { number: string; type: 'predefined'; extension?: string; } | { prompt: string; type: 'inferred'; }; transfer_option: { type: 'cold_transfer'; cold_transfer_mode?: 'sip_refer' | 'sip_invite'; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { type: 'warm_transfer'; agent_detection_timeout_ms?: number; enable_bridge_audio_cue?: boolean; ivr_option?: object; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; opt_out_human_detection?: boolean; private_handoff_option?: object | object; public_handoff_option?: object | object; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { agentic_transfer_config: object; type: 'agentic_warm_transfer'; enable_bridge_audio_cue?: boolean; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; public_handoff_option?: object | object; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; }; type: 'transfer_call'; custom_sip_headers?: object; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; ignore_e164_validation?: boolean; speak_during_execution?: boolean; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'check_availability_cal'; description?: string; timezone?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'book_appointment_cal'; description?: string; timezone?: string; } | { agent_id: string; name: string; post_call_analysis_setting: 'both_agents' | 'only_destination_agent'; type: 'agent_swap'; agent_version?: number | string; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; keep_current_language?: boolean; keep_current_voice?: boolean; speak_during_execution?: boolean; webhook_setting?: 'both_agents' | 'only_destination_agent' | 'only_source_agent'; } | { name: string; type: 'press_digit'; delay_ms?: number; description?: string; } | { name: string; sms_content: { content?: string; type?: 'predefined'; } | { prompt?: string; type?: 'inferred'; } | { template: 'info_collection'; type: 'template'; }; type: 'send_sms'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; type: 'custom'; url: string; args_at_root?: boolean; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; headers?: object; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; parameters?: { properties: object; type: 'object'; required?: string[]; }; query_params?: object; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; } | { code: string; name: string; type: 'code'; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; } | { description: string; name: string; type: 'extract_dynamic_variable'; variables: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; }[]; enable_typing_sound?: boolean; } | { name: string; type: 'bridge_transfer'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; type: 'cancel_transfer'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { description: string; name: string; type: 'mcp'; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; input_schema?: object; mcp_id?: string; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; }[]; voice_speed?: number; } | { id: string; type: 'end'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; tool_id: string; tool_type: 'local' | 'shared'; type: 'function'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; code: string; type: 'code'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; response_variables?: object; speak_during_execution?: boolean; timeout_ms?: number; } | { id: string; edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Transfer failed'; } | { prompt: 'Transfer failed'; type: 'prompt'; }; destination_node_id?: string; }; transfer_destination: { number: string; type: 'predefined'; extension?: string; } | { prompt: string; type: 'inferred'; }; transfer_option: { type: 'cold_transfer'; cold_transfer_mode?: 'sip_refer' | 'sip_invite'; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { type: 'warm_transfer'; agent_detection_timeout_ms?: number; enable_bridge_audio_cue?: boolean; ivr_option?: { prompt?: string; type?: 'prompt'; }; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; opt_out_human_detection?: boolean; private_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; public_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { agentic_transfer_config: { action_on_timeout?: 'bridge_transfer' | 'cancel_transfer'; transfer_agent?: object; transfer_timeout_ms?: number; }; type: 'agentic_warm_transfer'; enable_bridge_audio_cue?: boolean; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; public_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; }; type: 'transfer_call'; custom_sip_headers?: object; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; ignore_e164_validation?: boolean; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; instruction: { text: string; type: 'prompt'; }; type: 'press_digit'; delay_ms?: number; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; else_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; type: 'branch'; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; failed_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Failed to send'; } | { prompt: 'Failed to send'; type: 'prompt'; }; destination_node_id?: string; }; instruction: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { template: 'info_collection'; type: 'template'; }; success_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Sent successfully'; } | { prompt: 'Sent successfully'; type: 'prompt'; }; destination_node_id?: string; }; type: 'sms'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; type: 'extract_dynamic_variables'; variables: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; }[]; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; agent_id: string; edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Transfer failed'; } | { prompt: 'Transfer failed'; type: 'prompt'; }; destination_node_id?: string; }; post_call_analysis_setting: 'both_agents' | 'only_destination_agent'; type: 'agent_swap'; agent_version?: number | string; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; keep_current_language?: boolean; keep_current_voice?: boolean; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; webhook_setting?: 'both_agents' | 'only_destination_agent' | 'only_source_agent'; } | { id: string; mcp_id: string; mcp_tool_name: string; type: 'mcp'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; response_variables?: object; speak_during_execution?: boolean; } | { id: string; component_id: string; component_type: 'local' | 'shared'; else_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; type: 'component'; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; name?: string; } | { id: string; type: 'bridge_transfer'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; type: 'cancel_transfer'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; }[]; begin_tag_display_position?: { x?: number; y?: number; }; flex_mode?: boolean; mcps?: { name: string; url: string; headers?: object; query_params?: object; timeout_ms?: number; }[]; notes?: { id: string; content: string; display_position: { x?: number; y?: number; }; size: { height?: number; width?: number; }; }[]; start_node_id?: string; tools?: { name: string; type: 'custom'; url: string; args_at_root?: boolean; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; headers?: object; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; parameters?: { properties: object; type: 'object'; required?: string[]; }; query_params?: object; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'check_availability_cal'; description?: string; timezone?: string; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'book_appointment_cal'; description?: string; timezone?: string; tool_id?: string; }[]; }[]`\n - `default_dynamic_variables?: object`\n - `flex_mode?: boolean`\n - `global_prompt?: string`\n - `is_transfer_llm?: boolean`\n - `kb_config?: { filter_score?: number; top_k?: number; }`\n - `knowledge_base_ids?: string[]`\n - `mcps?: { name: string; url: string; headers?: object; query_params?: object; timeout_ms?: number; }[]`\n - `model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }`\n - `model_temperature?: number`\n - `nodes?: { id: string; instruction: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; type: 'conversation'; allow_dtmf_interruption?: boolean; always_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Always'; } | { prompt: 'Always'; type: 'prompt'; }; destination_node_id?: string; }; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_conversation_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; interruption_sensitivity?: number; kb_config?: { filter_score?: number; top_k?: number; }; knowledge_base_ids?: string[]; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; responsiveness?: number; skip_response_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Skip response'; } | { prompt: 'Skip response'; type: 'prompt'; }; destination_node_id?: string; }; voice_speed?: number; } | { id: string; instruction: { text: string; type: 'prompt'; }; type: 'subagent'; allow_dtmf_interruption?: boolean; always_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Always'; } | { prompt: 'Always'; type: 'prompt'; }; destination_node_id?: string; }; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_conversation_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; interruption_sensitivity?: number; kb_config?: { filter_score?: number; top_k?: number; }; knowledge_base_ids?: string[]; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; responsiveness?: number; skip_response_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Skip response'; } | { prompt: 'Skip response'; type: 'prompt'; }; destination_node_id?: string; }; tool_ids?: string[]; tools?: { name: string; type: 'end_call'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; transfer_destination: { number: string; type: 'predefined'; extension?: string; } | { prompt: string; type: 'inferred'; }; transfer_option: { type: 'cold_transfer'; cold_transfer_mode?: 'sip_refer' | 'sip_invite'; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { type: 'warm_transfer'; agent_detection_timeout_ms?: number; enable_bridge_audio_cue?: boolean; ivr_option?: { prompt?: string; type?: 'prompt'; }; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; opt_out_human_detection?: boolean; private_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; public_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { agentic_transfer_config: { action_on_timeout?: 'bridge_transfer' | 'cancel_transfer'; transfer_agent?: object; transfer_timeout_ms?: number; }; type: 'agentic_warm_transfer'; enable_bridge_audio_cue?: boolean; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; public_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; }; type: 'transfer_call'; custom_sip_headers?: object; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; ignore_e164_validation?: boolean; speak_during_execution?: boolean; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'check_availability_cal'; description?: string; timezone?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'book_appointment_cal'; description?: string; timezone?: string; } | { agent_id: string; name: string; post_call_analysis_setting: 'both_agents' | 'only_destination_agent'; type: 'agent_swap'; agent_version?: number | string; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; keep_current_language?: boolean; keep_current_voice?: boolean; speak_during_execution?: boolean; webhook_setting?: 'both_agents' | 'only_destination_agent' | 'only_source_agent'; } | { name: string; type: 'press_digit'; delay_ms?: number; description?: string; } | { name: string; sms_content: { content?: string; type?: 'predefined'; } | { prompt?: string; type?: 'inferred'; } | { template: 'info_collection'; type: 'template'; }; type: 'send_sms'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; type: 'custom'; url: string; args_at_root?: boolean; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; headers?: object; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; parameters?: { properties: object; type: 'object'; required?: string[]; }; query_params?: object; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; } | { code: string; name: string; type: 'code'; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; } | { description: string; name: string; type: 'extract_dynamic_variable'; variables: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; }[]; enable_typing_sound?: boolean; } | { name: string; type: 'bridge_transfer'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; type: 'cancel_transfer'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { description: string; name: string; type: 'mcp'; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; input_schema?: object; mcp_id?: string; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; }[]; voice_speed?: number; } | { id: string; type: 'end'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; tool_id: string; tool_type: 'local' | 'shared'; type: 'function'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; code: string; type: 'code'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; response_variables?: object; speak_during_execution?: boolean; timeout_ms?: number; } | { id: string; edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Transfer failed'; } | { prompt: 'Transfer failed'; type: 'prompt'; }; destination_node_id?: string; }; transfer_destination: { number: string; type: 'predefined'; extension?: string; } | { prompt: string; type: 'inferred'; }; transfer_option: { type: 'cold_transfer'; cold_transfer_mode?: 'sip_refer' | 'sip_invite'; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { type: 'warm_transfer'; agent_detection_timeout_ms?: number; enable_bridge_audio_cue?: boolean; ivr_option?: { prompt?: string; type?: 'prompt'; }; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; opt_out_human_detection?: boolean; private_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; public_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { agentic_transfer_config: { action_on_timeout?: 'bridge_transfer' | 'cancel_transfer'; transfer_agent?: { agent_id: string; agent_version: number | string; }; transfer_timeout_ms?: number; }; type: 'agentic_warm_transfer'; enable_bridge_audio_cue?: boolean; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; public_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; }; type: 'transfer_call'; custom_sip_headers?: object; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; ignore_e164_validation?: boolean; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; instruction: { text: string; type: 'prompt'; }; type: 'press_digit'; delay_ms?: number; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; else_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; type: 'branch'; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; failed_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Failed to send'; } | { prompt: 'Failed to send'; type: 'prompt'; }; destination_node_id?: string; }; instruction: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { template: 'info_collection'; type: 'template'; }; success_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Sent successfully'; } | { prompt: 'Sent successfully'; type: 'prompt'; }; destination_node_id?: string; }; type: 'sms'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; type: 'extract_dynamic_variables'; variables: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; }[]; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; agent_id: string; edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Transfer failed'; } | { prompt: 'Transfer failed'; type: 'prompt'; }; destination_node_id?: string; }; post_call_analysis_setting: 'both_agents' | 'only_destination_agent'; type: 'agent_swap'; agent_version?: number | string; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; keep_current_language?: boolean; keep_current_voice?: boolean; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; webhook_setting?: 'both_agents' | 'only_destination_agent' | 'only_source_agent'; } | { id: string; mcp_id: string; mcp_tool_name: string; type: 'mcp'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; response_variables?: object; speak_during_execution?: boolean; } | { id: string; component_id: string; component_type: 'local' | 'shared'; else_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; type: 'component'; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; name?: string; } | { id: string; type: 'bridge_transfer'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; type: 'cancel_transfer'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; }[]`\n - `notes?: { id: string; content: string; display_position: { x?: number; y?: number; }; size: { height?: number; width?: number; }; }[]`\n - `start_node_id?: string`\n - `start_speaker?: 'user' | 'agent'`\n - `tool_call_strict_mode?: boolean`\n - `tools?: { name: string; type: 'custom'; url: string; args_at_root?: boolean; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; headers?: object; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; parameters?: { properties: object; type: 'object'; required?: string[]; }; query_params?: object; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'check_availability_cal'; description?: string; timezone?: string; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'book_appointment_cal'; description?: string; timezone?: string; tool_id?: string; }[]`\n\n### Example\n\n```typescript\nimport Retell from 'retell-sdk';\n\nconst client = new Retell();\n\nconst conversationFlowResponse = await client.conversationFlow.retrieve('conversation_flow_id');\n\nconsole.log(conversationFlowResponse);\n```",
1490
+ markdown: "## retrieve\n\n`client.conversationFlow.retrieve(conversation_flow_id: string, version?: number): { conversation_flow_id: string; version: number; begin_after_user_silence_ms?: number; begin_tag_display_position?: object; components?: object[]; default_dynamic_variables?: object; flex_mode?: boolean; global_prompt?: string; is_transfer_llm?: boolean; kb_config?: object; knowledge_base_ids?: string[]; mcps?: object[]; model_choice?: object; model_temperature?: number; nodes?: object | object | object | object | object | object | object | object | object | object | object | object | object | object | object[]; notes?: object[]; start_node_id?: string; start_speaker?: 'user' | 'agent'; tool_call_strict_mode?: boolean; tools?: object | object | object[]; }`\n\n**get** `/get-conversation-flow/{conversation_flow_id}`\n\nRetrieve details of a specific Conversation Flow\n\n### Parameters\n\n- `conversation_flow_id: string`\n\n- `version?: number`\n Optional version of the conversation flow to retrieve. Defaults to the latest version.\n\n### Returns\n\n- `{ conversation_flow_id: string; version: number; begin_after_user_silence_ms?: number; begin_tag_display_position?: { x?: number; y?: number; }; components?: { name: string; nodes: { id: string; instruction: object | object; type: 'conversation'; allow_dtmf_interruption?: boolean; always_edge?: object; display_position?: object; edges?: object[]; finetune_conversation_examples?: object[]; finetune_transition_examples?: object[]; global_node_setting?: object; interruption_sensitivity?: number; kb_config?: object; knowledge_base_ids?: string[]; model_choice?: object; name?: string; responsiveness?: number; skip_response_edge?: object; voice_speed?: number; } | { id: string; instruction: object; type: 'subagent'; allow_dtmf_interruption?: boolean; always_edge?: object; display_position?: object; edges?: object[]; finetune_conversation_examples?: object[]; finetune_transition_examples?: object[]; global_node_setting?: object; interruption_sensitivity?: number; kb_config?: object; knowledge_base_ids?: string[]; model_choice?: object; name?: string; responsiveness?: number; skip_response_edge?: object; tool_ids?: string[]; tools?: object | object | object | object | object | object | object | object | object | object | object | object | object[]; voice_speed?: number; } | { id: string; type: 'end'; display_position?: object; global_node_setting?: object; instruction?: object | object; model_choice?: object; name?: string; speak_during_execution?: boolean; } | { id: string; tool_id: string; tool_type: 'local' | 'shared'; type: 'function'; wait_for_result: boolean; display_position?: object; edges?: object[]; else_edge?: object; enable_typing_sound?: boolean; finetune_transition_examples?: object[]; global_node_setting?: object; instruction?: object | object; model_choice?: object; name?: string; speak_during_execution?: boolean; } | { id: string; code: string; type: 'code'; wait_for_result: boolean; display_position?: object; edges?: object[]; else_edge?: object; enable_typing_sound?: boolean; finetune_transition_examples?: object[]; global_node_setting?: object; instruction?: object | object; model_choice?: object; name?: string; response_variables?: object; speak_during_execution?: boolean; timeout_ms?: number; } | { id: string; edge: object; transfer_destination: object | object; transfer_option: object | object | object; type: 'transfer_call'; custom_sip_headers?: object; display_position?: object; global_node_setting?: object; ignore_e164_validation?: boolean; instruction?: object | object; model_choice?: object; name?: string; speak_during_execution?: boolean; } | { id: string; instruction: object; type: 'press_digit'; delay_ms?: number; display_position?: object; edges?: object[]; finetune_transition_examples?: object[]; global_node_setting?: object; model_choice?: object; name?: string; } | { id: string; else_edge: object; type: 'branch'; display_position?: object; edges?: object[]; finetune_transition_examples?: object[]; global_node_setting?: object; model_choice?: object; name?: string; } | { id: string; failed_edge: object; instruction: object | object | object; success_edge: object; type: 'sms'; display_position?: object; global_node_setting?: object; model_choice?: object; name?: string; } | { id: string; type: 'extract_dynamic_variables'; variables: object | object | object | object[]; display_position?: object; edges?: object[]; else_edge?: object; enable_typing_sound?: boolean; finetune_transition_examples?: object[]; global_node_setting?: object; model_choice?: object; name?: string; } | { id: string; agent_id: string; edge: object; post_call_analysis_setting: 'both_agents' | 'only_destination_agent'; type: 'agent_swap'; agent_version?: number | string; display_position?: object; global_node_setting?: object; instruction?: object | object; keep_current_language?: boolean; keep_current_voice?: boolean; model_choice?: object; name?: string; speak_during_execution?: boolean; webhook_setting?: 'both_agents' | 'only_destination_agent' | 'only_source_agent'; } | { id: string; mcp_id: string; mcp_tool_name: string; type: 'mcp'; wait_for_result: boolean; display_position?: object; edges?: object[]; else_edge?: object; enable_typing_sound?: boolean; finetune_transition_examples?: object[]; global_node_setting?: object; instruction?: object | object; model_choice?: object; name?: string; response_variables?: object; speak_during_execution?: boolean; } | { id: string; component_id: string; component_type: 'local' | 'shared'; else_edge: object; type: 'component'; display_position?: object; edges?: object[]; finetune_transition_examples?: object[]; global_node_setting?: object; name?: string; } | { id: string; type: 'bridge_transfer'; display_position?: object; global_node_setting?: object; instruction?: object | object; model_choice?: object; name?: string; speak_during_execution?: boolean; } | { id: string; type: 'cancel_transfer'; display_position?: object; global_node_setting?: object; instruction?: object | object; model_choice?: object; name?: string; speak_during_execution?: boolean; }[]; begin_tag_display_position?: { x?: number; y?: number; }; flex_mode?: boolean; mcps?: { name: string; url: string; headers?: object; query_params?: object; timeout_ms?: number; }[]; notes?: { id: string; content: string; display_position: object; size: object; }[]; start_node_id?: string; tools?: { name: string; type: 'custom'; url: string; args_at_root?: boolean; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; headers?: object; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; parameters?: object; query_params?: object; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'check_availability_cal'; description?: string; timezone?: string; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'book_appointment_cal'; description?: string; timezone?: string; tool_id?: string; }[]; }[]; default_dynamic_variables?: object; flex_mode?: boolean; global_prompt?: string; is_transfer_llm?: boolean; kb_config?: { filter_score?: number; top_k?: number; }; knowledge_base_ids?: string[]; mcps?: { name: string; url: string; headers?: object; query_params?: object; timeout_ms?: number; }[]; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; model_temperature?: number; nodes?: { id: string; instruction: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; type: 'conversation'; allow_dtmf_interruption?: boolean; always_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; finetune_conversation_examples?: { id: string; transcript: object | object | object[]; }[]; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; interruption_sensitivity?: number; kb_config?: { filter_score?: number; top_k?: number; }; knowledge_base_ids?: string[]; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; responsiveness?: number; skip_response_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; voice_speed?: number; } | { id: string; instruction: { text: string; type: 'prompt'; }; type: 'subagent'; allow_dtmf_interruption?: boolean; always_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; finetune_conversation_examples?: { id: string; transcript: object | object | object[]; }[]; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; interruption_sensitivity?: number; kb_config?: { filter_score?: number; top_k?: number; }; knowledge_base_ids?: string[]; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; responsiveness?: number; skip_response_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; tool_ids?: string[]; tools?: { name: string; type: 'end_call'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; transfer_destination: object | object; transfer_option: object | object | object; type: 'transfer_call'; custom_sip_headers?: object; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; ignore_e164_validation?: boolean; speak_during_execution?: boolean; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'check_availability_cal'; description?: string; timezone?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'book_appointment_cal'; description?: string; timezone?: string; } | { agent_id: string; name: string; post_call_analysis_setting: 'both_agents' | 'only_destination_agent'; type: 'agent_swap'; agent_version?: number | string; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; keep_current_language?: boolean; keep_current_voice?: boolean; speak_during_execution?: boolean; webhook_setting?: 'both_agents' | 'only_destination_agent' | 'only_source_agent'; } | { name: string; type: 'press_digit'; delay_ms?: number; description?: string; } | { name: string; sms_content: object | object | object; type: 'send_sms'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; type: 'custom'; url: string; args_at_root?: boolean; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; headers?: object; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; parameters?: object; query_params?: object; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; } | { code: string; name: string; type: 'code'; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; } | { description: string; name: string; type: 'extract_dynamic_variable'; variables: object | object | object | object[]; enable_typing_sound?: boolean; } | { name: string; type: 'bridge_transfer'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; type: 'cancel_transfer'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { description: string; name: string; type: 'mcp'; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; input_schema?: object; mcp_id?: string; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; }[]; voice_speed?: number; } | { id: string; type: 'end'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; tool_id: string; tool_type: 'local' | 'shared'; type: 'function'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; code: string; type: 'code'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; response_variables?: object; speak_during_execution?: boolean; timeout_ms?: number; } | { id: string; edge: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; transfer_destination: { number: string; type: 'predefined'; extension?: string; } | { prompt: string; type: 'inferred'; }; transfer_option: { type: 'cold_transfer'; cold_transfer_mode?: 'sip_refer' | 'sip_invite'; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { type: 'warm_transfer'; agent_detection_timeout_ms?: number; enable_bridge_audio_cue?: boolean; ivr_option?: object; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; opt_out_human_detection?: boolean; private_handoff_option?: object | object; public_handoff_option?: object | object; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { agentic_transfer_config: object; type: 'agentic_warm_transfer'; enable_bridge_audio_cue?: boolean; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; public_handoff_option?: object | object; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; }; type: 'transfer_call'; custom_sip_headers?: object; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; ignore_e164_validation?: boolean; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; instruction: { text: string; type: 'prompt'; }; type: 'press_digit'; delay_ms?: number; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; else_edge: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; type: 'branch'; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; failed_edge: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; instruction: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { template: 'info_collection'; type: 'template'; }; success_edge: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; type: 'sms'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; type: 'extract_dynamic_variables'; variables: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; }[]; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; agent_id: string; edge: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; post_call_analysis_setting: 'both_agents' | 'only_destination_agent'; type: 'agent_swap'; agent_version?: number | string; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; keep_current_language?: boolean; keep_current_voice?: boolean; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; webhook_setting?: 'both_agents' | 'only_destination_agent' | 'only_source_agent'; } | { id: string; mcp_id: string; mcp_tool_name: string; type: 'mcp'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; response_variables?: object; speak_during_execution?: boolean; } | { id: string; component_id: string; component_type: 'local' | 'shared'; else_edge: { id: string; transition_condition: object | object | object; destination_node_id?: string; }; type: 'component'; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: object | object | object[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; name?: string; } | { id: string; type: 'bridge_transfer'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; type: 'cancel_transfer'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: object[]; negative_finetune_examples?: object[]; positive_finetune_examples?: object[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; }[]; notes?: { id: string; content: string; display_position: { x?: number; y?: number; }; size: { height?: number; width?: number; }; }[]; start_node_id?: string; start_speaker?: 'user' | 'agent'; tool_call_strict_mode?: boolean; tools?: { name: string; type: 'custom'; url: string; args_at_root?: boolean; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; headers?: object; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; parameters?: { properties: object; type: 'object'; required?: string[]; }; query_params?: object; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'check_availability_cal'; description?: string; timezone?: string; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'book_appointment_cal'; description?: string; timezone?: string; tool_id?: string; }[]; }`\n\n - `conversation_flow_id: string`\n - `version: number`\n - `begin_after_user_silence_ms?: number`\n - `begin_tag_display_position?: { x?: number; y?: number; }`\n - `components?: { name: string; nodes: { id: string; instruction: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; type: 'conversation'; allow_dtmf_interruption?: boolean; always_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Always'; } | { prompt: 'Always'; type: 'prompt'; }; destination_node_id?: string; }; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_conversation_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; interruption_sensitivity?: number; kb_config?: { filter_score?: number; top_k?: number; }; knowledge_base_ids?: string[]; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; responsiveness?: number; skip_response_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Skip response'; } | { prompt: 'Skip response'; type: 'prompt'; }; destination_node_id?: string; }; voice_speed?: number; } | { id: string; instruction: { text: string; type: 'prompt'; }; type: 'subagent'; allow_dtmf_interruption?: boolean; always_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Always'; } | { prompt: 'Always'; type: 'prompt'; }; destination_node_id?: string; }; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_conversation_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; interruption_sensitivity?: number; kb_config?: { filter_score?: number; top_k?: number; }; knowledge_base_ids?: string[]; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; responsiveness?: number; skip_response_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Skip response'; } | { prompt: 'Skip response'; type: 'prompt'; }; destination_node_id?: string; }; tool_ids?: string[]; tools?: { name: string; type: 'end_call'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; transfer_destination: { number: string; type: 'predefined'; extension?: string; } | { prompt: string; type: 'inferred'; }; transfer_option: { type: 'cold_transfer'; cold_transfer_mode?: 'sip_refer' | 'sip_invite'; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { type: 'warm_transfer'; agent_detection_timeout_ms?: number; enable_bridge_audio_cue?: boolean; ivr_option?: object; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; opt_out_human_detection?: boolean; private_handoff_option?: object | object; public_handoff_option?: object | object; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { agentic_transfer_config: object; type: 'agentic_warm_transfer'; enable_bridge_audio_cue?: boolean; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; public_handoff_option?: object | object; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; }; type: 'transfer_call'; custom_sip_headers?: object; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; ignore_e164_validation?: boolean; speak_during_execution?: boolean; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'check_availability_cal'; description?: string; timezone?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'book_appointment_cal'; description?: string; timezone?: string; } | { agent_id: string; name: string; post_call_analysis_setting: 'both_agents' | 'only_destination_agent'; type: 'agent_swap'; agent_version?: number | string; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; keep_current_language?: boolean; keep_current_voice?: boolean; speak_during_execution?: boolean; webhook_setting?: 'both_agents' | 'only_destination_agent' | 'only_source_agent'; } | { name: string; type: 'press_digit'; delay_ms?: number; description?: string; } | { name: string; sms_content: { content?: string; type?: 'predefined'; } | { prompt?: string; type?: 'inferred'; } | { template: 'info_collection'; type: 'template'; }; type: 'send_sms'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; type: 'custom'; url: string; args_at_root?: boolean; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; headers?: object; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; parameters?: { properties: object; type: 'object'; required?: string[]; }; query_params?: object; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; } | { code: string; name: string; type: 'code'; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; } | { description: string; name: string; type: 'extract_dynamic_variable'; variables: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; }[]; enable_typing_sound?: boolean; } | { name: string; type: 'bridge_transfer'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; type: 'cancel_transfer'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { description: string; name: string; type: 'mcp'; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; input_schema?: object; mcp_id?: string; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; }[]; voice_speed?: number; } | { id: string; type: 'end'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; tool_id: string; tool_type: 'local' | 'shared'; type: 'function'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; code: string; type: 'code'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; response_variables?: object; speak_during_execution?: boolean; timeout_ms?: number; } | { id: string; edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Transfer failed'; } | { prompt: 'Transfer failed'; type: 'prompt'; }; destination_node_id?: string; }; transfer_destination: { number: string; type: 'predefined'; extension?: string; } | { prompt: string; type: 'inferred'; }; transfer_option: { type: 'cold_transfer'; cold_transfer_mode?: 'sip_refer' | 'sip_invite'; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { type: 'warm_transfer'; agent_detection_timeout_ms?: number; enable_bridge_audio_cue?: boolean; ivr_option?: { prompt?: string; type?: 'prompt'; }; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; opt_out_human_detection?: boolean; private_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; public_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { agentic_transfer_config: { action_on_timeout?: 'bridge_transfer' | 'cancel_transfer'; transfer_agent?: object; transfer_timeout_ms?: number; }; type: 'agentic_warm_transfer'; enable_bridge_audio_cue?: boolean; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; public_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; }; type: 'transfer_call'; custom_sip_headers?: object; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; ignore_e164_validation?: boolean; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; instruction: { text: string; type: 'prompt'; }; type: 'press_digit'; delay_ms?: number; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; else_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; type: 'branch'; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; failed_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Failed to send'; } | { prompt: 'Failed to send'; type: 'prompt'; }; destination_node_id?: string; }; instruction: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { template: 'info_collection'; type: 'template'; }; success_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Sent successfully'; } | { prompt: 'Sent successfully'; type: 'prompt'; }; destination_node_id?: string; }; type: 'sms'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; type: 'extract_dynamic_variables'; variables: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; }[]; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; agent_id: string; edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Transfer failed'; } | { prompt: 'Transfer failed'; type: 'prompt'; }; destination_node_id?: string; }; post_call_analysis_setting: 'both_agents' | 'only_destination_agent'; type: 'agent_swap'; agent_version?: number | string; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; keep_current_language?: boolean; keep_current_voice?: boolean; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; webhook_setting?: 'both_agents' | 'only_destination_agent' | 'only_source_agent'; } | { id: string; mcp_id: string; mcp_tool_name: string; type: 'mcp'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; response_variables?: object; speak_during_execution?: boolean; } | { id: string; component_id: string; component_type: 'local' | 'shared'; else_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; type: 'component'; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; name?: string; } | { id: string; type: 'bridge_transfer'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; type: 'cancel_transfer'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: object | object; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: object | object | object[]; }[]; positive_finetune_examples?: { transcript: object | object | object[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; }[]; begin_tag_display_position?: { x?: number; y?: number; }; flex_mode?: boolean; mcps?: { name: string; url: string; headers?: object; query_params?: object; timeout_ms?: number; }[]; notes?: { id: string; content: string; display_position: { x?: number; y?: number; }; size: { height?: number; width?: number; }; }[]; start_node_id?: string; tools?: { name: string; type: 'custom'; url: string; args_at_root?: boolean; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; headers?: object; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; parameters?: { properties: object; type: 'object'; required?: string[]; }; query_params?: object; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'check_availability_cal'; description?: string; timezone?: string; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'book_appointment_cal'; description?: string; timezone?: string; tool_id?: string; }[]; }[]`\n - `default_dynamic_variables?: object`\n - `flex_mode?: boolean`\n - `global_prompt?: string`\n - `is_transfer_llm?: boolean`\n - `kb_config?: { filter_score?: number; top_k?: number; }`\n - `knowledge_base_ids?: string[]`\n - `mcps?: { name: string; url: string; headers?: object; query_params?: object; timeout_ms?: number; }[]`\n - `model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }`\n - `model_temperature?: number`\n - `nodes?: { id: string; instruction: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; type: 'conversation'; allow_dtmf_interruption?: boolean; always_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Always'; } | { prompt: 'Always'; type: 'prompt'; }; destination_node_id?: string; }; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_conversation_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; interruption_sensitivity?: number; kb_config?: { filter_score?: number; top_k?: number; }; knowledge_base_ids?: string[]; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; responsiveness?: number; skip_response_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Skip response'; } | { prompt: 'Skip response'; type: 'prompt'; }; destination_node_id?: string; }; voice_speed?: number; } | { id: string; instruction: { text: string; type: 'prompt'; }; type: 'subagent'; allow_dtmf_interruption?: boolean; always_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Always'; } | { prompt: 'Always'; type: 'prompt'; }; destination_node_id?: string; }; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_conversation_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; interruption_sensitivity?: number; kb_config?: { filter_score?: number; top_k?: number; }; knowledge_base_ids?: string[]; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; responsiveness?: number; skip_response_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Skip response'; } | { prompt: 'Skip response'; type: 'prompt'; }; destination_node_id?: string; }; tool_ids?: string[]; tools?: { name: string; type: 'end_call'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; transfer_destination: { number: string; type: 'predefined'; extension?: string; } | { prompt: string; type: 'inferred'; }; transfer_option: { type: 'cold_transfer'; cold_transfer_mode?: 'sip_refer' | 'sip_invite'; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { type: 'warm_transfer'; agent_detection_timeout_ms?: number; enable_bridge_audio_cue?: boolean; ivr_option?: { prompt?: string; type?: 'prompt'; }; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; opt_out_human_detection?: boolean; private_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; public_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { agentic_transfer_config: { action_on_timeout?: 'bridge_transfer' | 'cancel_transfer'; transfer_agent?: object; transfer_timeout_ms?: number; }; type: 'agentic_warm_transfer'; enable_bridge_audio_cue?: boolean; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; public_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; }; type: 'transfer_call'; custom_sip_headers?: object; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; ignore_e164_validation?: boolean; speak_during_execution?: boolean; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'check_availability_cal'; description?: string; timezone?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'book_appointment_cal'; description?: string; timezone?: string; } | { agent_id: string; name: string; post_call_analysis_setting: 'both_agents' | 'only_destination_agent'; type: 'agent_swap'; agent_version?: number | string; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; keep_current_language?: boolean; keep_current_voice?: boolean; speak_during_execution?: boolean; webhook_setting?: 'both_agents' | 'only_destination_agent' | 'only_source_agent'; } | { name: string; type: 'press_digit'; delay_ms?: number; description?: string; } | { name: string; sms_content: { content?: string; type?: 'predefined'; } | { prompt?: string; type?: 'inferred'; } | { template: 'info_collection'; type: 'template'; }; type: 'send_sms'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; type: 'custom'; url: string; args_at_root?: boolean; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; headers?: object; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; parameters?: { properties: object; type: 'object'; required?: string[]; }; query_params?: object; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; } | { code: string; name: string; type: 'code'; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; } | { description: string; name: string; type: 'extract_dynamic_variable'; variables: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; }[]; enable_typing_sound?: boolean; } | { name: string; type: 'bridge_transfer'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { name: string; type: 'cancel_transfer'; description?: string; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; speak_during_execution?: boolean; } | { description: string; name: string; type: 'mcp'; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; input_schema?: object; mcp_id?: string; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; }[]; voice_speed?: number; } | { id: string; type: 'end'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; tool_id: string; tool_type: 'local' | 'shared'; type: 'function'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; code: string; type: 'code'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; response_variables?: object; speak_during_execution?: boolean; timeout_ms?: number; } | { id: string; edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Transfer failed'; } | { prompt: 'Transfer failed'; type: 'prompt'; }; destination_node_id?: string; }; transfer_destination: { number: string; type: 'predefined'; extension?: string; } | { prompt: string; type: 'inferred'; }; transfer_option: { type: 'cold_transfer'; cold_transfer_mode?: 'sip_refer' | 'sip_invite'; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { type: 'warm_transfer'; agent_detection_timeout_ms?: number; enable_bridge_audio_cue?: boolean; ivr_option?: { prompt?: string; type?: 'prompt'; }; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; opt_out_human_detection?: boolean; private_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; public_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; } | { agentic_transfer_config: { action_on_timeout?: 'bridge_transfer' | 'cancel_transfer'; transfer_agent?: { agent_id: string; agent_version: number | string; }; transfer_timeout_ms?: number; }; type: 'agentic_warm_transfer'; enable_bridge_audio_cue?: boolean; on_hold_music?: 'none' | 'relaxing_sound' | 'uplifting_beats' | 'ringtone'; public_handoff_option?: { prompt?: string; type?: 'prompt'; } | { message?: string; type?: 'static_message'; }; show_transferee_as_caller?: boolean; transfer_ring_duration_ms?: number; }; type: 'transfer_call'; custom_sip_headers?: object; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; ignore_e164_validation?: boolean; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; instruction: { text: string; type: 'prompt'; }; type: 'press_digit'; delay_ms?: number; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; else_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; type: 'branch'; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; failed_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Failed to send'; } | { prompt: 'Failed to send'; type: 'prompt'; }; destination_node_id?: string; }; instruction: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; } | { template: 'info_collection'; type: 'template'; }; success_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Sent successfully'; } | { prompt: 'Sent successfully'; type: 'prompt'; }; destination_node_id?: string; }; type: 'sms'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; type: 'extract_dynamic_variables'; variables: { description: string; name: string; type: 'string'; conditional_prompt?: string; examples?: string[]; required?: boolean; } | { choices: string[]; description: string; name: string; type: 'enum'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'boolean'; conditional_prompt?: string; required?: boolean; } | { description: string; name: string; type: 'number'; conditional_prompt?: string; required?: boolean; }[]; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; } | { id: string; agent_id: string; edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Transfer failed'; } | { prompt: 'Transfer failed'; type: 'prompt'; }; destination_node_id?: string; }; post_call_analysis_setting: 'both_agents' | 'only_destination_agent'; type: 'agent_swap'; agent_version?: number | string; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; keep_current_language?: boolean; keep_current_voice?: boolean; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; webhook_setting?: 'both_agents' | 'only_destination_agent' | 'only_source_agent'; } | { id: string; mcp_id: string; mcp_tool_name: string; type: 'mcp'; wait_for_result: boolean; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; else_edge?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; enable_typing_sound?: boolean; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; response_variables?: object; speak_during_execution?: boolean; } | { id: string; component_id: string; component_type: 'local' | 'shared'; else_edge: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; prompt?: 'Else'; } | { prompt: 'Else'; type: 'prompt'; }; destination_node_id?: string; }; type: 'component'; display_position?: { x?: number; y?: number; }; edges?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: { left: string; operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'not_contains' | 'exists' | 'not_exist'; right?: string; }[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; finetune_transition_examples?: { id: string; transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; destination_node_id?: string; }[]; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; name?: string; } | { id: string; type: 'bridge_transfer'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; } | { id: string; type: 'cancel_transfer'; display_position?: { x?: number; y?: number; }; global_node_setting?: { condition: string; cool_down?: number; go_back_conditions?: { id: string; transition_condition: { prompt: string; type: 'prompt'; } | { equations: object[]; operator: '||' | '&&'; type: 'equation'; }; destination_node_id?: string; }[]; negative_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; positive_finetune_examples?: { transcript: { content: string; role: 'agent' | 'user'; } | { arguments: string; name: string; role: 'tool_call_invocation'; tool_call_id: string; } | { content: string; role: 'tool_call_result'; tool_call_id: string; }[]; }[]; }; instruction?: { text: string; type: 'prompt'; } | { text: string; type: 'static_text'; }; model_choice?: { model: string; type: 'cascading'; high_priority?: boolean; }; name?: string; speak_during_execution?: boolean; }[]`\n - `notes?: { id: string; content: string; display_position: { x?: number; y?: number; }; size: { height?: number; width?: number; }; }[]`\n - `start_node_id?: string`\n - `start_speaker?: 'user' | 'agent'`\n - `tool_call_strict_mode?: boolean`\n - `tools?: { name: string; type: 'custom'; url: string; args_at_root?: boolean; description?: string; enable_typing_sound?: boolean; execution_message_description?: string; execution_message_type?: 'prompt' | 'static_text'; headers?: object; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; parameters?: { properties: object; type: 'object'; required?: string[]; }; query_params?: object; response_variables?: object; speak_after_execution?: boolean; speak_during_execution?: boolean; timeout_ms?: number; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'check_availability_cal'; description?: string; timezone?: string; tool_id?: string; } | { cal_api_key: string; event_type_id: number | string; name: string; type: 'book_appointment_cal'; description?: string; timezone?: string; tool_id?: string; }[]`\n\n### Example\n\n```typescript\nimport Retell from 'retell-sdk';\n\nconst client = new Retell();\n\nconst conversationFlowResponse = await client.conversationFlow.retrieve('conversation_flow_id');\n\nconsole.log(conversationFlowResponse);\n```",
1491
1491
  perLanguage: {
1492
1492
  typescript: {
1493
1493
  method: 'client.conversationFlow.retrieve',
1494
1494
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst conversationFlowResponse = await client.conversationFlow.retrieve('conversation_flow_id');\n\nconsole.log(conversationFlowResponse.conversation_flow_id);",
1495
1495
  },
1496
+ http: {
1497
+ example: 'curl https://api.retellai.com/get-conversation-flow/$CONVERSATION_FLOW_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1498
+ },
1496
1499
  python: {
1497
1500
  method: 'conversation_flow.retrieve',
1498
1501
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nconversation_flow_response = client.conversation_flow.retrieve(\n conversation_flow_id="conversation_flow_id",\n)\nprint(conversation_flow_response.conversation_flow_id)',
1499
1502
  },
1500
- http: {
1501
- example: 'curl https://api.retellai.com/get-conversation-flow/$CONVERSATION_FLOW_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1502
- },
1503
1503
  },
1504
1504
  },
1505
1505
  {
@@ -1518,13 +1518,13 @@ const EMBEDDED_METHODS = [
1518
1518
  method: 'client.conversationFlow.list',
1519
1519
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst conversationFlows = await client.conversationFlow.list();\n\nconsole.log(conversationFlows.has_more);",
1520
1520
  },
1521
+ http: {
1522
+ example: 'curl https://api.retellai.com/v2/list-conversation-flows \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1523
+ },
1521
1524
  python: {
1522
1525
  method: 'conversation_flow.list',
1523
1526
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nconversation_flows = client.conversation_flow.list()\nprint(conversation_flows.has_more)',
1524
1527
  },
1525
- http: {
1526
- example: 'curl https://api.retellai.com/v2/list-conversation-flows \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1527
- },
1528
1528
  },
1529
1529
  },
1530
1530
  {
@@ -1564,13 +1564,13 @@ const EMBEDDED_METHODS = [
1564
1564
  method: 'client.conversationFlow.update',
1565
1565
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst conversationFlowResponse = await client.conversationFlow.update('conversation_flow_id');\n\nconsole.log(conversationFlowResponse.conversation_flow_id);",
1566
1566
  },
1567
+ http: {
1568
+ example: 'curl https://api.retellai.com/update-conversation-flow/$CONVERSATION_FLOW_ID \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "begin_after_user_silence_ms": 2000,\n "default_dynamic_variables": {\n "company_name": "Retell Inc",\n "support_hours": "9 AM - 5 PM"\n },\n "flex_mode": false,\n "global_prompt": "You are a helpful customer service agent.",\n "is_transfer_llm": false,\n "knowledge_base_ids": [\n "kb_001",\n "kb_002"\n ],\n "model_temperature": 0.7,\n "nodes": [\n {\n "id": "start",\n "instruction": {\n "text": "Greet the customer and ask how you can help them.",\n "type": "prompt"\n },\n "type": "conversation",\n "edges": [\n {\n "id": "edge_1",\n "transition_condition": {\n "prompt": "Customer wants to book appointment",\n "type": "prompt"\n },\n "destination_node_id": "book_appointment"\n }\n ]\n }\n ],\n "start_node_id": "start",\n "start_speaker": "agent",\n "tool_call_strict_mode": true,\n "tools": [\n {\n "name": "get_customer_info",\n "type": "custom",\n "url": "https://api.example.com/customer",\n "description": "Get customer information from database",\n "method": "GET",\n "tool_id": "tool_001"\n }\n ]\n }\'',
1569
+ },
1567
1570
  python: {
1568
1571
  method: 'conversation_flow.update',
1569
1572
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nconversation_flow_response = client.conversation_flow.update(\n conversation_flow_id="conversation_flow_id",\n)\nprint(conversation_flow_response.conversation_flow_id)',
1570
1573
  },
1571
- http: {
1572
- example: 'curl https://api.retellai.com/update-conversation-flow/$CONVERSATION_FLOW_ID \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "begin_after_user_silence_ms": 2000,\n "default_dynamic_variables": {\n "company_name": "Retell Inc",\n "support_hours": "9 AM - 5 PM"\n },\n "flex_mode": false,\n "global_prompt": "You are a helpful customer service agent.",\n "is_transfer_llm": false,\n "knowledge_base_ids": [\n "kb_001",\n "kb_002"\n ],\n "model_temperature": 0.7,\n "nodes": [\n {\n "id": "start",\n "instruction": {\n "text": "Greet the customer and ask how you can help them.",\n "type": "prompt"\n },\n "type": "conversation",\n "edges": [\n {\n "id": "edge_1",\n "transition_condition": {\n "prompt": "Customer wants to book appointment",\n "type": "prompt"\n },\n "destination_node_id": "book_appointment"\n }\n ]\n }\n ],\n "start_node_id": "start",\n "start_speaker": "agent",\n "tool_call_strict_mode": true,\n "tools": [\n {\n "name": "get_customer_info",\n "type": "custom",\n "url": "https://api.example.com/customer",\n "description": "Get customer information from database",\n "method": "GET",\n "tool_id": "tool_001"\n }\n ]\n }\'',
1573
- },
1574
1574
  },
1575
1575
  },
1576
1576
  {
@@ -1588,13 +1588,13 @@ const EMBEDDED_METHODS = [
1588
1588
  method: 'client.conversationFlow.delete',
1589
1589
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.conversationFlow.delete('conversation_flow_id');",
1590
1590
  },
1591
+ http: {
1592
+ example: 'curl https://api.retellai.com/delete-conversation-flow/$CONVERSATION_FLOW_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1593
+ },
1591
1594
  python: {
1592
1595
  method: 'conversation_flow.delete',
1593
1596
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.conversation_flow.delete(\n "conversation_flow_id",\n)',
1594
1597
  },
1595
- http: {
1596
- example: 'curl https://api.retellai.com/delete-conversation-flow/$CONVERSATION_FLOW_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1597
- },
1598
1598
  },
1599
1599
  },
1600
1600
  {
@@ -1622,13 +1622,13 @@ const EMBEDDED_METHODS = [
1622
1622
  method: 'client.conversationFlowComponent.create',
1623
1623
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst conversationFlowComponentResponse = await client.conversationFlowComponent.create({\n name: 'Customer Information Collector',\n nodes: [\n {\n id: 'collect_info',\n instruction: {\n text: 'Ask the customer for their name and contact information.',\n type: 'prompt',\n },\n type: 'conversation',\n },\n ],\n});\n\nconsole.log(conversationFlowComponentResponse.conversation_flow_component_id);",
1624
1624
  },
1625
+ http: {
1626
+ example: 'curl https://api.retellai.com/create-conversation-flow-component \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "name": "Customer Information Collector",\n "nodes": [\n {\n "id": "collect_info",\n "instruction": {\n "text": "Ask the customer for their name and contact information.",\n "type": "prompt"\n },\n "type": "conversation"\n }\n ],\n "flex_mode": false,\n "start_node_id": "collect_info",\n "tools": [\n {\n "name": "get_customer_info",\n "type": "custom",\n "url": "https://api.example.com/customer",\n "description": "Get customer information from database",\n "method": "GET",\n "tool_id": "tool_001"\n }\n ]\n }\'',
1627
+ },
1625
1628
  python: {
1626
1629
  method: 'conversation_flow_component.create',
1627
1630
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nconversation_flow_component_response = client.conversation_flow_component.create(\n name="Customer Information Collector",\n nodes=[{\n "id": "collect_info",\n "instruction": {\n "text": "Ask the customer for their name and contact information.",\n "type": "prompt",\n },\n "type": "conversation",\n }],\n)\nprint(conversation_flow_component_response.conversation_flow_component_id)',
1628
1631
  },
1629
- http: {
1630
- example: 'curl https://api.retellai.com/create-conversation-flow-component \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "name": "Customer Information Collector",\n "nodes": [\n {\n "id": "collect_info",\n "instruction": {\n "text": "Ask the customer for their name and contact information.",\n "type": "prompt"\n },\n "type": "conversation"\n }\n ],\n "flex_mode": false,\n "start_node_id": "collect_info",\n "tools": [\n {\n "name": "get_customer_info",\n "type": "custom",\n "url": "https://api.example.com/customer",\n "description": "Get customer information from database",\n "method": "GET",\n "tool_id": "tool_001"\n }\n ]\n }\'',
1631
- },
1632
1632
  },
1633
1633
  },
1634
1634
  {
@@ -1647,13 +1647,13 @@ const EMBEDDED_METHODS = [
1647
1647
  method: 'client.conversationFlowComponent.retrieve',
1648
1648
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst conversationFlowComponentResponse = await client.conversationFlowComponent.retrieve(\n 'conversation_flow_component_id',\n);\n\nconsole.log(conversationFlowComponentResponse.conversation_flow_component_id);",
1649
1649
  },
1650
+ http: {
1651
+ example: 'curl https://api.retellai.com/get-conversation-flow-component/$CONVERSATION_FLOW_COMPONENT_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1652
+ },
1650
1653
  python: {
1651
1654
  method: 'conversation_flow_component.retrieve',
1652
1655
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nconversation_flow_component_response = client.conversation_flow_component.retrieve(\n "conversation_flow_component_id",\n)\nprint(conversation_flow_component_response.conversation_flow_component_id)',
1653
1656
  },
1654
- http: {
1655
- example: 'curl https://api.retellai.com/get-conversation-flow-component/$CONVERSATION_FLOW_COMPONENT_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1656
- },
1657
1657
  },
1658
1658
  },
1659
1659
  {
@@ -1672,13 +1672,13 @@ const EMBEDDED_METHODS = [
1672
1672
  method: 'client.conversationFlowComponent.list',
1673
1673
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst conversationFlowComponents = await client.conversationFlowComponent.list();\n\nconsole.log(conversationFlowComponents.has_more);",
1674
1674
  },
1675
+ http: {
1676
+ example: 'curl https://api.retellai.com/v2/list-conversation-flow-components \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1677
+ },
1675
1678
  python: {
1676
1679
  method: 'conversation_flow_component.list',
1677
1680
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nconversation_flow_components = client.conversation_flow_component.list()\nprint(conversation_flow_components.has_more)',
1678
1681
  },
1679
- http: {
1680
- example: 'curl https://api.retellai.com/v2/list-conversation-flow-components \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1681
- },
1682
1682
  },
1683
1683
  },
1684
1684
  {
@@ -1707,13 +1707,13 @@ const EMBEDDED_METHODS = [
1707
1707
  method: 'client.conversationFlowComponent.update',
1708
1708
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst conversationFlowComponentResponse = await client.conversationFlowComponent.update(\n 'conversation_flow_component_id',\n);\n\nconsole.log(conversationFlowComponentResponse.conversation_flow_component_id);",
1709
1709
  },
1710
+ http: {
1711
+ example: 'curl https://api.retellai.com/update-conversation-flow-component/$CONVERSATION_FLOW_COMPONENT_ID \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "flex_mode": false,\n "name": "Customer Information Collector",\n "nodes": [\n {\n "id": "collect_info",\n "instruction": {\n "text": "Ask the customer for their name and contact information.",\n "type": "prompt"\n },\n "type": "conversation"\n }\n ],\n "start_node_id": "collect_info",\n "tools": [\n {\n "name": "get_customer_info",\n "type": "custom",\n "url": "https://api.example.com/customer",\n "description": "Get customer information from database",\n "method": "GET",\n "tool_id": "tool_001"\n }\n ]\n }\'',
1712
+ },
1710
1713
  python: {
1711
1714
  method: 'conversation_flow_component.update',
1712
1715
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nconversation_flow_component_response = client.conversation_flow_component.update(\n conversation_flow_component_id="conversation_flow_component_id",\n)\nprint(conversation_flow_component_response.conversation_flow_component_id)',
1713
1716
  },
1714
- http: {
1715
- example: 'curl https://api.retellai.com/update-conversation-flow-component/$CONVERSATION_FLOW_COMPONENT_ID \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "flex_mode": false,\n "name": "Customer Information Collector",\n "nodes": [\n {\n "id": "collect_info",\n "instruction": {\n "text": "Ask the customer for their name and contact information.",\n "type": "prompt"\n },\n "type": "conversation"\n }\n ],\n "start_node_id": "collect_info",\n "tools": [\n {\n "name": "get_customer_info",\n "type": "custom",\n "url": "https://api.example.com/customer",\n "description": "Get customer information from database",\n "method": "GET",\n "tool_id": "tool_001"\n }\n ]\n }\'',
1716
- },
1717
1717
  },
1718
1718
  },
1719
1719
  {
@@ -1731,13 +1731,13 @@ const EMBEDDED_METHODS = [
1731
1731
  method: 'client.conversationFlowComponent.delete',
1732
1732
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.conversationFlowComponent.delete('conversation_flow_component_id');",
1733
1733
  },
1734
+ http: {
1735
+ example: 'curl https://api.retellai.com/delete-conversation-flow-component/$CONVERSATION_FLOW_COMPONENT_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1736
+ },
1734
1737
  python: {
1735
1738
  method: 'conversation_flow_component.delete',
1736
1739
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.conversation_flow_component.delete(\n "conversation_flow_component_id",\n)',
1737
1740
  },
1738
- http: {
1739
- example: 'curl https://api.retellai.com/delete-conversation-flow-component/$CONVERSATION_FLOW_COMPONENT_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1740
- },
1741
1741
  },
1742
1742
  },
1743
1743
  {
@@ -1764,13 +1764,13 @@ const EMBEDDED_METHODS = [
1764
1764
  method: 'client.knowledgeBase.create',
1765
1765
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst knowledgeBaseResponse = await client.knowledgeBase.create({\n knowledge_base_name: 'Sample KB',\n});\n\nconsole.log(knowledgeBaseResponse.knowledge_base_id);",
1766
1766
  },
1767
+ http: {
1768
+ example: 'curl https://api.retellai.com/create-knowledge-base \\\n -H \'Content-Type: multipart/form-data\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -F knowledge_base_name=\'Sample KB\' \\\n -F enable_auto_refresh=true \\\n -F knowledge_base_urls=\'["https://www.example.com","https://www.retellai.com"]\' \\\n -F max_chunk_size=2000 \\\n -F min_chunk_size=400',
1769
+ },
1767
1770
  python: {
1768
1771
  method: 'knowledge_base.create',
1769
1772
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nknowledge_base_response = client.knowledge_base.create(\n knowledge_base_name="Sample KB",\n)\nprint(knowledge_base_response.knowledge_base_id)',
1770
1773
  },
1771
- http: {
1772
- example: 'curl https://api.retellai.com/create-knowledge-base \\\n -H \'Content-Type: multipart/form-data\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -F knowledge_base_name=\'Sample KB\' \\\n -F enable_auto_refresh=true \\\n -F knowledge_base_urls=\'["https://www.example.com","https://www.retellai.com"]\' \\\n -F max_chunk_size=2000 \\\n -F min_chunk_size=400',
1773
- },
1774
1774
  },
1775
1775
  },
1776
1776
  {
@@ -1789,13 +1789,13 @@ const EMBEDDED_METHODS = [
1789
1789
  method: 'client.knowledgeBase.retrieve',
1790
1790
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst knowledgeBaseResponse = await client.knowledgeBase.retrieve('kb_1234567890');\n\nconsole.log(knowledgeBaseResponse.knowledge_base_id);",
1791
1791
  },
1792
+ http: {
1793
+ example: 'curl https://api.retellai.com/get-knowledge-base/$KNOWLEDGE_BASE_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1794
+ },
1792
1795
  python: {
1793
1796
  method: 'knowledge_base.retrieve',
1794
1797
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nknowledge_base_response = client.knowledge_base.retrieve(\n "kb_1234567890",\n)\nprint(knowledge_base_response.knowledge_base_id)',
1795
1798
  },
1796
- http: {
1797
- example: 'curl https://api.retellai.com/get-knowledge-base/$KNOWLEDGE_BASE_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1798
- },
1799
1799
  },
1800
1800
  },
1801
1801
  {
@@ -1813,13 +1813,13 @@ const EMBEDDED_METHODS = [
1813
1813
  method: 'client.knowledgeBase.list',
1814
1814
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst knowledgeBaseResponses = await client.knowledgeBase.list();\n\nconsole.log(knowledgeBaseResponses);",
1815
1815
  },
1816
+ http: {
1817
+ example: 'curl https://api.retellai.com/list-knowledge-bases \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1818
+ },
1816
1819
  python: {
1817
1820
  method: 'knowledge_base.list',
1818
1821
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nknowledge_base_responses = client.knowledge_base.list()\nprint(knowledge_base_responses)',
1819
1822
  },
1820
- http: {
1821
- example: 'curl https://api.retellai.com/list-knowledge-bases \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1822
- },
1823
1823
  },
1824
1824
  },
1825
1825
  {
@@ -1837,13 +1837,13 @@ const EMBEDDED_METHODS = [
1837
1837
  method: 'client.knowledgeBase.delete',
1838
1838
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.knowledgeBase.delete('kb_1234567890');",
1839
1839
  },
1840
+ http: {
1841
+ example: 'curl https://api.retellai.com/delete-knowledge-base/$KNOWLEDGE_BASE_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1842
+ },
1840
1843
  python: {
1841
1844
  method: 'knowledge_base.delete',
1842
1845
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.knowledge_base.delete(\n "kb_1234567890",\n)',
1843
1846
  },
1844
- http: {
1845
- example: 'curl https://api.retellai.com/delete-knowledge-base/$KNOWLEDGE_BASE_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1846
- },
1847
1847
  },
1848
1848
  },
1849
1849
  {
@@ -1867,13 +1867,13 @@ const EMBEDDED_METHODS = [
1867
1867
  method: 'client.knowledgeBase.addSources',
1868
1868
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst knowledgeBaseResponse = await client.knowledgeBase.addSources('kb_1234567890');\n\nconsole.log(knowledgeBaseResponse.knowledge_base_id);",
1869
1869
  },
1870
+ http: {
1871
+ example: 'curl https://api.retellai.com/add-knowledge-base-sources/$KNOWLEDGE_BASE_ID \\\n -H \'Content-Type: multipart/form-data\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -F knowledge_base_urls=\'["https://www.example.com","https://www.retellai.com"]\'',
1872
+ },
1870
1873
  python: {
1871
1874
  method: 'knowledge_base.add_sources',
1872
1875
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nknowledge_base_response = client.knowledge_base.add_sources(\n knowledge_base_id="kb_1234567890",\n)\nprint(knowledge_base_response.knowledge_base_id)',
1873
1876
  },
1874
- http: {
1875
- example: 'curl https://api.retellai.com/add-knowledge-base-sources/$KNOWLEDGE_BASE_ID \\\n -H \'Content-Type: multipart/form-data\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -F knowledge_base_urls=\'["https://www.example.com","https://www.retellai.com"]\'',
1876
- },
1877
1877
  },
1878
1878
  },
1879
1879
  {
@@ -1892,13 +1892,13 @@ const EMBEDDED_METHODS = [
1892
1892
  method: 'client.knowledgeBase.deleteSource',
1893
1893
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst knowledgeBaseResponse = await client.knowledgeBase.deleteSource('source_1234567890', {\n knowledge_base_id: 'kb_1234567890',\n});\n\nconsole.log(knowledgeBaseResponse.knowledge_base_id);",
1894
1894
  },
1895
+ http: {
1896
+ example: 'curl https://api.retellai.com/delete-knowledge-base-source/$KNOWLEDGE_BASE_ID/source/$SOURCE_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1897
+ },
1895
1898
  python: {
1896
1899
  method: 'knowledge_base.delete_source',
1897
1900
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nknowledge_base_response = client.knowledge_base.delete_source(\n source_id="source_1234567890",\n knowledge_base_id="kb_1234567890",\n)\nprint(knowledge_base_response.knowledge_base_id)',
1898
1901
  },
1899
- http: {
1900
- example: 'curl https://api.retellai.com/delete-knowledge-base-source/$KNOWLEDGE_BASE_ID/source/$SOURCE_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1901
- },
1902
1902
  },
1903
1903
  },
1904
1904
  {
@@ -1922,13 +1922,13 @@ const EMBEDDED_METHODS = [
1922
1922
  method: 'client.voice.addResource',
1923
1923
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst voiceResponse = await client.voice.addResource({\n provider_voice_id: 'provider_voice_id',\n voice_name: 'x',\n});\n\nconsole.log(voiceResponse.provider);",
1924
1924
  },
1925
+ http: {
1926
+ example: 'curl https://api.retellai.com/add-community-voice \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "provider_voice_id": "provider_voice_id",\n "voice_name": "x"\n }\'',
1927
+ },
1925
1928
  python: {
1926
1929
  method: 'voice.add_resource',
1927
1930
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nvoice_response = client.voice.add_resource(\n provider_voice_id="provider_voice_id",\n voice_name="x",\n)\nprint(voice_response.provider)',
1928
1931
  },
1929
- http: {
1930
- example: 'curl https://api.retellai.com/add-community-voice \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "provider_voice_id": "provider_voice_id",\n "voice_name": "x"\n }\'',
1931
- },
1932
1932
  },
1933
1933
  },
1934
1934
  {
@@ -1951,13 +1951,13 @@ const EMBEDDED_METHODS = [
1951
1951
  method: 'client.voice.clone',
1952
1952
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst voiceResponse = await client.voice.clone({\n files: [fs.createReadStream('path/to/file')],\n voice_name: 'x',\n voice_provider: 'elevenlabs',\n});\n\nconsole.log(voiceResponse.provider);",
1953
1953
  },
1954
+ http: {
1955
+ example: 'curl https://api.retellai.com/clone-voice \\\n -H \'Content-Type: multipart/form-data\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -F files=\'["Example data"]\' \\\n -F voice_name=x \\\n -F voice_provider=elevenlabs',
1956
+ },
1954
1957
  python: {
1955
1958
  method: 'voice.clone',
1956
1959
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nvoice_response = client.voice.clone(\n files=[b"Example data"],\n voice_name="x",\n voice_provider="elevenlabs",\n)\nprint(voice_response.provider)',
1957
1960
  },
1958
- http: {
1959
- example: 'curl https://api.retellai.com/clone-voice \\\n -H \'Content-Type: multipart/form-data\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -F files=\'["Example data"]\' \\\n -F voice_name=x \\\n -F voice_provider=elevenlabs',
1960
- },
1961
1961
  },
1962
1962
  },
1963
1963
  {
@@ -1976,13 +1976,13 @@ const EMBEDDED_METHODS = [
1976
1976
  method: 'client.voice.retrieve',
1977
1977
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst voiceResponse = await client.voice.retrieve('retell-Cimo');\n\nconsole.log(voiceResponse.provider);",
1978
1978
  },
1979
+ http: {
1980
+ example: 'curl https://api.retellai.com/get-voice/$VOICE_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1981
+ },
1979
1982
  python: {
1980
1983
  method: 'voice.retrieve',
1981
1984
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nvoice_response = client.voice.retrieve(\n "retell-Cimo",\n)\nprint(voice_response.provider)',
1982
1985
  },
1983
- http: {
1984
- example: 'curl https://api.retellai.com/get-voice/$VOICE_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
1985
- },
1986
1986
  },
1987
1987
  },
1988
1988
  {
@@ -2000,13 +2000,13 @@ const EMBEDDED_METHODS = [
2000
2000
  method: 'client.voice.list',
2001
2001
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst voiceResponses = await client.voice.list();\n\nconsole.log(voiceResponses);",
2002
2002
  },
2003
+ http: {
2004
+ example: 'curl https://api.retellai.com/list-voices \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2005
+ },
2003
2006
  python: {
2004
2007
  method: 'voice.list',
2005
2008
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nvoice_responses = client.voice.list()\nprint(voice_responses)',
2006
2009
  },
2007
- http: {
2008
- example: 'curl https://api.retellai.com/list-voices \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2009
- },
2010
2010
  },
2011
2011
  },
2012
2012
  {
@@ -2028,13 +2028,13 @@ const EMBEDDED_METHODS = [
2028
2028
  method: 'client.voice.search',
2029
2029
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.voice.search({ search_query: 'search_query' });\n\nconsole.log(response.voices);",
2030
2030
  },
2031
+ http: {
2032
+ example: 'curl https://api.retellai.com/search-community-voice \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "search_query": "search_query"\n }\'',
2033
+ },
2031
2034
  python: {
2032
2035
  method: 'voice.search',
2033
2036
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nresponse = client.voice.search(\n search_query="search_query",\n)\nprint(response.voices)',
2034
2037
  },
2035
- http: {
2036
- example: 'curl https://api.retellai.com/search-community-voice \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "search_query": "search_query"\n }\'',
2037
- },
2038
2038
  },
2039
2039
  },
2040
2040
  {
@@ -2052,13 +2052,13 @@ const EMBEDDED_METHODS = [
2052
2052
  method: 'client.concurrency.retrieve',
2053
2053
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst concurrency = await client.concurrency.retrieve();\n\nconsole.log(concurrency.base_concurrency);",
2054
2054
  },
2055
+ http: {
2056
+ example: 'curl https://api.retellai.com/get-concurrency \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2057
+ },
2055
2058
  python: {
2056
2059
  method: 'concurrency.retrieve',
2057
2060
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nconcurrency = client.concurrency.retrieve()\nprint(concurrency.base_concurrency)',
2058
2061
  },
2059
- http: {
2060
- example: 'curl https://api.retellai.com/get-concurrency \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2061
- },
2062
2062
  },
2063
2063
  },
2064
2064
  {
@@ -2077,13 +2077,13 @@ const EMBEDDED_METHODS = [
2077
2077
  method: 'client.exportRequest.list',
2078
2078
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst exportRequests = await client.exportRequest.list();\n\nconsole.log(exportRequests.has_more);",
2079
2079
  },
2080
+ http: {
2081
+ example: 'curl https://api.retellai.com/v2/list-export-requests \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2082
+ },
2080
2083
  python: {
2081
2084
  method: 'export_request.list',
2082
2085
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nexport_requests = client.export_request.list()\nprint(export_requests.has_more)',
2083
2086
  },
2084
- http: {
2085
- example: 'curl https://api.retellai.com/v2/list-export-requests \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2086
- },
2087
2087
  },
2088
2088
  },
2089
2089
  {
@@ -2109,13 +2109,13 @@ const EMBEDDED_METHODS = [
2109
2109
  method: 'client.batchCall.createBatchCall',
2110
2110
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst batchCallResponse = await client.batchCall.createBatchCall({\n from_number: '+14157774444',\n tasks: [{ to_number: '+12137774445' }],\n});\n\nconsole.log(batchCallResponse.batch_call_id);",
2111
2111
  },
2112
+ http: {
2113
+ example: 'curl https://api.retellai.com/create-batch-call \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n --max-time 300 \\\n -d \'{\n "from_number": "+14157774444",\n "tasks": [\n {\n "to_number": "+12137774445"\n }\n ],\n "name": "First batch call",\n "trigger_timestamp": 1735718400000\n }\'',
2114
+ },
2112
2115
  python: {
2113
2116
  method: 'batch_call.create_batch_call',
2114
2117
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nbatch_call_response = client.batch_call.create_batch_call(\n from_number="+14157774444",\n tasks=[{\n "to_number": "+12137774445"\n }],\n)\nprint(batch_call_response.batch_call_id)',
2115
2118
  },
2116
- http: {
2117
- example: 'curl https://api.retellai.com/create-batch-call \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n --max-time 300 \\\n -d \'{\n "from_number": "+14157774444",\n "tasks": [\n {\n "to_number": "+12137774445"\n }\n ],\n "name": "First batch call",\n "trigger_timestamp": 1735718400000\n }\'',
2118
- },
2119
2119
  },
2120
2120
  },
2121
2121
  {
@@ -2142,13 +2142,13 @@ const EMBEDDED_METHODS = [
2142
2142
  method: 'client.tests.createTestCaseDefinition',
2143
2143
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst testCaseDefinitionResponse = await client.tests.createTestCaseDefinition({\n metrics: ['string'],\n name: 'name',\n response_engine: { llm_id: 'llm_id', type: 'retell-llm' },\n user_prompt: 'user_prompt',\n});\n\nconsole.log(testCaseDefinitionResponse.test_case_definition_id);",
2144
2144
  },
2145
+ http: {
2146
+ example: 'curl https://api.retellai.com/create-test-case-definition \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "metrics": [\n "string"\n ],\n "name": "name",\n "response_engine": {\n "llm_id": "llm_id",\n "type": "retell-llm"\n },\n "user_prompt": "user_prompt"\n }\'',
2147
+ },
2145
2148
  python: {
2146
2149
  method: 'tests.create_test_case_definition',
2147
2150
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\ntest_case_definition_response = client.tests.create_test_case_definition(\n metrics=["string"],\n name="name",\n response_engine={\n "llm_id": "llm_id",\n "type": "retell-llm",\n },\n user_prompt="user_prompt",\n)\nprint(test_case_definition_response.test_case_definition_id)',
2148
2151
  },
2149
- http: {
2150
- example: 'curl https://api.retellai.com/create-test-case-definition \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "metrics": [\n "string"\n ],\n "name": "name",\n "response_engine": {\n "llm_id": "llm_id",\n "type": "retell-llm"\n },\n "user_prompt": "user_prompt"\n }\'',
2151
- },
2152
2152
  },
2153
2153
  },
2154
2154
  {
@@ -2167,13 +2167,13 @@ const EMBEDDED_METHODS = [
2167
2167
  method: 'client.tests.getTestCaseDefinition',
2168
2168
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst testCaseDefinitionResponse = await client.tests.getTestCaseDefinition(\n 'test_case_definition_id',\n);\n\nconsole.log(testCaseDefinitionResponse.test_case_definition_id);",
2169
2169
  },
2170
+ http: {
2171
+ example: 'curl https://api.retellai.com/get-test-case-definition/$TEST_CASE_DEFINITION_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2172
+ },
2170
2173
  python: {
2171
2174
  method: 'tests.get_test_case_definition',
2172
2175
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\ntest_case_definition_response = client.tests.get_test_case_definition(\n "test_case_definition_id",\n)\nprint(test_case_definition_response.test_case_definition_id)',
2173
2176
  },
2174
- http: {
2175
- example: 'curl https://api.retellai.com/get-test-case-definition/$TEST_CASE_DEFINITION_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2176
- },
2177
2177
  },
2178
2178
  },
2179
2179
  {
@@ -2198,13 +2198,13 @@ const EMBEDDED_METHODS = [
2198
2198
  method: 'client.tests.listTestCaseDefinitions',
2199
2199
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.tests.listTestCaseDefinitions({ type: 'retell-llm' });\n\nconsole.log(response.has_more);",
2200
2200
  },
2201
+ http: {
2202
+ example: 'curl https://api.retellai.com/v2/list-test-case-definitions \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2203
+ },
2201
2204
  python: {
2202
2205
  method: 'tests.list_test_case_definitions',
2203
2206
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nresponse = client.tests.list_test_case_definitions(\n type="retell-llm",\n)\nprint(response.has_more)',
2204
2207
  },
2205
- http: {
2206
- example: 'curl https://api.retellai.com/v2/list-test-case-definitions \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2207
- },
2208
2208
  },
2209
2209
  },
2210
2210
  {
@@ -2232,13 +2232,13 @@ const EMBEDDED_METHODS = [
2232
2232
  method: 'client.tests.updateTestCaseDefinition',
2233
2233
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst testCaseDefinitionResponse = await client.tests.updateTestCaseDefinition(\n 'test_case_definition_id',\n);\n\nconsole.log(testCaseDefinitionResponse.test_case_definition_id);",
2234
2234
  },
2235
+ http: {
2236
+ example: "curl https://api.retellai.com/update-test-case-definition/$TEST_CASE_DEFINITION_ID \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -H \"Authorization: Bearer $RETELL_API_KEY\" \\\n -d '{}'",
2237
+ },
2235
2238
  python: {
2236
2239
  method: 'tests.update_test_case_definition',
2237
2240
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\ntest_case_definition_response = client.tests.update_test_case_definition(\n test_case_definition_id="test_case_definition_id",\n)\nprint(test_case_definition_response.test_case_definition_id)',
2238
2241
  },
2239
- http: {
2240
- example: "curl https://api.retellai.com/update-test-case-definition/$TEST_CASE_DEFINITION_ID \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -H \"Authorization: Bearer $RETELL_API_KEY\" \\\n -d '{}'",
2241
- },
2242
2242
  },
2243
2243
  },
2244
2244
  {
@@ -2256,13 +2256,13 @@ const EMBEDDED_METHODS = [
2256
2256
  method: 'client.tests.deleteTestCaseDefinition',
2257
2257
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.tests.deleteTestCaseDefinition('test_case_definition_id');",
2258
2258
  },
2259
+ http: {
2260
+ example: 'curl https://api.retellai.com/delete-test-case-definition/$TEST_CASE_DEFINITION_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2261
+ },
2259
2262
  python: {
2260
2263
  method: 'tests.delete_test_case_definition',
2261
2264
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nclient.tests.delete_test_case_definition(\n "test_case_definition_id",\n)',
2262
2265
  },
2263
- http: {
2264
- example: 'curl https://api.retellai.com/delete-test-case-definition/$TEST_CASE_DEFINITION_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2265
- },
2266
2266
  },
2267
2267
  },
2268
2268
  {
@@ -2284,13 +2284,13 @@ const EMBEDDED_METHODS = [
2284
2284
  method: 'client.tests.createBatchTest',
2285
2285
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst batchTestResponse = await client.tests.createBatchTest({\n response_engine: { llm_id: 'llm_id', type: 'retell-llm' },\n test_case_definition_ids: ['string'],\n});\n\nconsole.log(batchTestResponse.test_case_batch_job_id);",
2286
2286
  },
2287
+ http: {
2288
+ example: 'curl https://api.retellai.com/create-batch-test \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "response_engine": {\n "llm_id": "llm_id",\n "type": "retell-llm"\n },\n "test_case_definition_ids": [\n "string"\n ]\n }\'',
2289
+ },
2287
2290
  python: {
2288
2291
  method: 'tests.create_batch_test',
2289
2292
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nbatch_test_response = client.tests.create_batch_test(\n response_engine={\n "llm_id": "llm_id",\n "type": "retell-llm",\n },\n test_case_definition_ids=["string"],\n)\nprint(batch_test_response.test_case_batch_job_id)',
2290
2293
  },
2291
- http: {
2292
- example: 'curl https://api.retellai.com/create-batch-test \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n -d \'{\n "response_engine": {\n "llm_id": "llm_id",\n "type": "retell-llm"\n },\n "test_case_definition_ids": [\n "string"\n ]\n }\'',
2293
- },
2294
2294
  },
2295
2295
  },
2296
2296
  {
@@ -2309,13 +2309,13 @@ const EMBEDDED_METHODS = [
2309
2309
  method: 'client.tests.getBatchTest',
2310
2310
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst batchTestResponse = await client.tests.getBatchTest('test_case_batch_job_id');\n\nconsole.log(batchTestResponse.test_case_batch_job_id);",
2311
2311
  },
2312
+ http: {
2313
+ example: 'curl https://api.retellai.com/get-batch-test/$TEST_CASE_BATCH_JOB_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2314
+ },
2312
2315
  python: {
2313
2316
  method: 'tests.get_batch_test',
2314
2317
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nbatch_test_response = client.tests.get_batch_test(\n "test_case_batch_job_id",\n)\nprint(batch_test_response.test_case_batch_job_id)',
2315
2318
  },
2316
- http: {
2317
- example: 'curl https://api.retellai.com/get-batch-test/$TEST_CASE_BATCH_JOB_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2318
- },
2319
2319
  },
2320
2320
  },
2321
2321
  {
@@ -2341,13 +2341,13 @@ const EMBEDDED_METHODS = [
2341
2341
  method: 'client.tests.listBatchTests',
2342
2342
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.tests.listBatchTests({ type: 'retell-llm' });\n\nconsole.log(response.has_more);",
2343
2343
  },
2344
+ http: {
2345
+ example: 'curl https://api.retellai.com/v2/list-batch-tests \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2346
+ },
2344
2347
  python: {
2345
2348
  method: 'tests.list_batch_tests',
2346
2349
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nresponse = client.tests.list_batch_tests(\n type="retell-llm",\n)\nprint(response.has_more)',
2347
2350
  },
2348
- http: {
2349
- example: 'curl https://api.retellai.com/v2/list-batch-tests \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2350
- },
2351
2351
  },
2352
2352
  },
2353
2353
  {
@@ -2366,13 +2366,13 @@ const EMBEDDED_METHODS = [
2366
2366
  method: 'client.tests.getTestRun',
2367
2367
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst testCaseJobResponse = await client.tests.getTestRun('test_case_job_id');\n\nconsole.log(testCaseJobResponse.test_case_definition_id);",
2368
2368
  },
2369
+ http: {
2370
+ example: 'curl https://api.retellai.com/get-test-run/$TEST_CASE_JOB_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2371
+ },
2369
2372
  python: {
2370
2373
  method: 'tests.get_test_run',
2371
2374
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\ntest_case_job_response = client.tests.get_test_run(\n "test_case_job_id",\n)\nprint(test_case_job_response.test_case_definition_id)',
2372
2375
  },
2373
- http: {
2374
- example: 'curl https://api.retellai.com/get-test-run/$TEST_CASE_JOB_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2375
- },
2376
2376
  },
2377
2377
  },
2378
2378
  {
@@ -2391,13 +2391,13 @@ const EMBEDDED_METHODS = [
2391
2391
  method: 'client.tests.listTestRuns',
2392
2392
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.tests.listTestRuns('test_case_batch_job_id');\n\nconsole.log(response.has_more);",
2393
2393
  },
2394
+ http: {
2395
+ example: 'curl https://api.retellai.com/v2/list-test-runs/$TEST_CASE_BATCH_JOB_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2396
+ },
2394
2397
  python: {
2395
2398
  method: 'tests.list_test_runs',
2396
2399
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nresponse = client.tests.list_test_runs(\n test_case_batch_job_id="test_case_batch_job_id",\n)\nprint(response.has_more)',
2397
2400
  },
2398
- http: {
2399
- example: 'curl https://api.retellai.com/v2/list-test-runs/$TEST_CASE_BATCH_JOB_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2400
- },
2401
2401
  },
2402
2402
  },
2403
2403
  {
@@ -2425,13 +2425,13 @@ const EMBEDDED_METHODS = [
2425
2425
  method: 'client.playground.completion',
2426
2426
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.playground.completion('agent_id', {\n messages: [\n { content: \"Hi, I'd like to check my appointment.\", role: 'user' },\n { content: 'Sure! Could you please provide your name?', role: 'agent' },\n { content: 'My name is John Smith.', role: 'user' },\n ],\n});\n\nconsole.log(response.current_node_id);",
2427
2427
  },
2428
+ http: {
2429
+ example: 'curl https://api.retellai.com/agent-playground-completion/$AGENT_ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n --max-time 300 \\\n -d "{\n \\"messages\\": [\n {\n \\"content\\": \\"Hi, I\'d like to check my appointment.\\",\n \\"role\\": \\"user\\"\n },\n {\n \\"content\\": \\"Sure! Could you please provide your name?\\",\n \\"role\\": \\"agent\\"\n },\n {\n \\"content\\": \\"My name is John Smith.\\",\n \\"role\\": \\"user\\"\n }\n ],\n \\"component_id\\": \\"component_xyz789\\",\n \\"current_node_id\\": \\"start-node-abc123\\",\n \\"current_state\\": \\"greeting\\",\n \\"dynamic_variables\\": {\n \\"customer_name\\": \\"John Smith\\",\n \\"customer_phone\\": \\"444-223-3564\\"\n }\n }"',
2430
+ },
2428
2431
  python: {
2429
2432
  method: 'playground.completion',
2430
2433
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nresponse = client.playground.completion(\n agent_id="agent_id",\n messages=[{\n "content": "Hi, I\'d like to check my appointment.",\n "role": "user",\n }, {\n "content": "Sure! Could you please provide your name?",\n "role": "agent",\n }, {\n "content": "My name is John Smith.",\n "role": "user",\n }],\n)\nprint(response.current_node_id)',
2431
2434
  },
2432
- http: {
2433
- example: 'curl https://api.retellai.com/agent-playground-completion/$AGENT_ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $RETELL_API_KEY" \\\n --max-time 300 \\\n -d "{\n \\"messages\\": [\n {\n \\"content\\": \\"Hi, I\'d like to check my appointment.\\",\n \\"role\\": \\"user\\"\n },\n {\n \\"content\\": \\"Sure! Could you please provide your name?\\",\n \\"role\\": \\"agent\\"\n },\n {\n \\"content\\": \\"My name is John Smith.\\",\n \\"role\\": \\"user\\"\n }\n ],\n \\"component_id\\": \\"component_xyz789\\",\n \\"current_node_id\\": \\"start-node-abc123\\",\n \\"current_state\\": \\"greeting\\",\n \\"dynamic_variables\\": {\n \\"customer_name\\": \\"John Smith\\",\n \\"customer_phone\\": \\"444-223-3564\\"\n }\n }"',
2434
- },
2435
2435
  },
2436
2436
  },
2437
2437
  {
@@ -2450,25 +2450,25 @@ const EMBEDDED_METHODS = [
2450
2450
  method: 'client.mcpTool.getMcpTools',
2451
2451
  example: "import Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst mcpToolDefinitions = await client.mcpTool.getMcpTools('oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD', {\n mcp_id: 'mcp-server-1',\n});\n\nconsole.log(mcpToolDefinitions);",
2452
2452
  },
2453
+ http: {
2454
+ example: 'curl https://api.retellai.com/get-mcp-tools/$AGENT_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2455
+ },
2453
2456
  python: {
2454
2457
  method: 'mcp_tool.get_mcp_tools',
2455
2458
  example: 'import os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\nmcp_tool_definitions = client.mcp_tool.get_mcp_tools(\n agent_id="oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",\n mcp_id="mcp-server-1",\n)\nprint(mcp_tool_definitions)',
2456
2459
  },
2457
- http: {
2458
- example: 'curl https://api.retellai.com/get-mcp-tools/$AGENT_ID \\\n -H "Authorization: Bearer $RETELL_API_KEY"',
2459
- },
2460
2460
  },
2461
2461
  },
2462
2462
  ];
2463
2463
  const EMBEDDED_READMES = [
2464
- {
2465
- language: 'python',
2466
- content: '# Retell Python API library\n\n<!-- prettier-ignore -->\n[![PyPI version](https://img.shields.io/pypi/v/retell-sdk.svg?label=pypi%20(stable))](https://pypi.org/project/retell-sdk/)\n\nThe Retell Python library provides convenient access to the Retell REST API from any Python 3.9+\napplication. The library includes type definitions for all request params and response fields,\nand offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).\n\n\n\n\n\n## MCP Server\n\nUse the Retell MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.\n\n[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=%40retell-ai%2Fmcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkByZXRlbGwtYWkvbWNwLXNlcnZlciJdLCJlbnYiOnsiUkVURUxMX0FQSV9LRVkiOiJZT1VSX1JFVEVMTF9BUElfS0VZIn19)\n[![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22%40retell-ai%2Fmcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40retell-ai%2Fmcp-server%22%5D%2C%22env%22%3A%7B%22RETELL_API_KEY%22%3A%22YOUR_RETELL_API_KEY%22%7D%7D)\n\n> Note: You may need to set environment variables in your MCP client.\n\n## Documentation\n\nThe REST API documentation can be found on [docs.retellai.com](https://docs.retellai.com/). The full API of this library can be found in [api.md](api.md).\n\n## Installation\n\n```sh\n# install from PyPI\npip install retell-sdk\n```\n\n## Usage\n\nThe full API of this library can be found in [api.md](api.md).\n\n```python\nimport os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\n\nagent_response = client.agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n)\nprint(agent_response.agent_id)\n```\n\nWhile you can provide an `api_key` keyword argument,\nwe recommend using [python-dotenv](https://pypi.org/project/python-dotenv/)\nto add `RETELL_API_KEY="YOUR_RETELL_API_KEY"` to your `.env` file\nso that your API Key is not stored in source control.\n\n## Async usage\n\nSimply import `AsyncRetell` instead of `Retell` and use `await` with each API call:\n\n```python\nimport os\nimport asyncio\nfrom retell import AsyncRetell\n\nclient = AsyncRetell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\n\nasync def main() -> None:\n agent_response = await client.agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n )\n print(agent_response.agent_id)\n\nasyncio.run(main())\n```\n\nFunctionality between the synchronous and asynchronous clients is otherwise identical.\n\n### With aiohttp\n\nBy default, the async client uses `httpx` for HTTP requests. However, for improved concurrency performance you may also use `aiohttp` as the HTTP backend.\n\nYou can enable this by installing `aiohttp`:\n\n```sh\n# install from PyPI\npip install retell-sdk[aiohttp]\n```\n\nThen you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:\n\n```python\nimport os\nimport asyncio\nfrom retell import DefaultAioHttpClient\nfrom retell import AsyncRetell\n\nasync def main() -> None:\n async with AsyncRetell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n http_client=DefaultAioHttpClient(),\n) as client:\n agent_response = await client.agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n )\n print(agent_response.agent_id)\n\nasyncio.run(main())\n```\n\n\n\n## Using types\n\nNested request parameters are [TypedDicts](https://docs.python.org/3/library/typing.html#typing.TypedDict). Responses are [Pydantic models](https://docs.pydantic.dev) which also provide helper methods for things like:\n\n- Serializing back into JSON, `model.to_json()`\n- Converting to a dictionary, `model.to_dict()`\n\nTyped requests and responses provide autocomplete and documentation within your editor. If you would like to see type errors in VS Code to help catch bugs earlier, set `python.analysis.typeCheckingMode` to `basic`.\n\n\n\n## Nested params\n\nNested parameters are dictionaries, typed using `TypedDict`, for example:\n\n```python\nfrom retell import Retell\n\nclient = Retell()\n\nagent_response = client.agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n call_screening_option={\n "agent_identity": "Acme Health scheduling team",\n "call_purpose": "confirming your appointment for tomorrow",\n },\n)\nprint(agent_response.call_screening_option)\n```\n\n\n\n## Handling errors\n\nWhen the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `retell.APIConnectionError` is raised.\n\nWhen the API returns a non-success status code (that is, 4xx or 5xx\nresponse), a subclass of `retell.APIStatusError` is raised, containing `status_code` and `response` properties.\n\nAll errors inherit from `retell.APIError`.\n\n```python\nimport retell\nfrom retell import Retell\n\nclient = Retell()\n\ntry:\n client.agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n )\nexcept retell.APIConnectionError as e:\n print("The server could not be reached")\n print(e.__cause__) # an underlying Exception, likely raised within httpx.\nexcept retell.RateLimitError as e:\n print("A 429 status code was received; we should back off a bit.")\nexcept retell.APIStatusError as e:\n print("Another non-200-range status code was received")\n print(e.status_code)\n print(e.response)\n```\n\nError codes are as follows:\n\n| Status Code | Error Type |\n| ----------- | -------------------------- |\n| 400 | `BadRequestError` |\n| 401 | `AuthenticationError` |\n| 403 | `PermissionDeniedError` |\n| 404 | `NotFoundError` |\n| 422 | `UnprocessableEntityError` |\n| 429 | `RateLimitError` |\n| >=500 | `InternalServerError` |\n| N/A | `APIConnectionError` |\n\n### Retries\n\nCertain errors are automatically retried 2 times by default, with a short exponential backoff.\nConnection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict,\n429 Rate Limit, and >=500 Internal errors are all retried by default.\n\nYou can use the `max_retries` option to configure or disable retry settings:\n\n```python\nfrom retell import Retell\n\n# Configure the default for all requests:\nclient = Retell(\n # default is 2\n max_retries=0,\n)\n\n# Or, configure per-request:\nclient.with_options(max_retries = 5).agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n)\n```\n\n### Timeouts\n\nBy default requests time out after 1 minute. You can configure this with a `timeout` option,\nwhich accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/timeouts/#fine-tuning-the-configuration) object:\n\n```python\nfrom retell import Retell\n\n# Configure the default for all requests:\nclient = Retell(\n # 20 seconds (default is 1 minute)\n timeout=20.0,\n)\n\n# More granular control:\nclient = Retell(\n timeout=httpx.Timeout(60.0, read=5.0, write=10.0, connect=2.0),\n)\n\n# Override per-request:\nclient.with_options(timeout = 5.0).agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n)\n```\n\nOn timeout, an `APITimeoutError` is thrown.\n\nNote that requests that time out are [retried twice by default](#retries).\n\n\n\n## Advanced\n\n### Logging\n\nWe use the standard library [`logging`](https://docs.python.org/3/library/logging.html) module.\n\nYou can enable logging by setting the environment variable `RETELL_LOG` to `info`.\n\n```shell\n$ export RETELL_LOG=info\n```\n\nOr to `debug` for more verbose logging.\n\n### How to tell whether `None` means `null` or missing\n\nIn an API response, a field may be explicitly `null`, or missing entirely; in either case, its value is `None` in this library. You can differentiate the two cases with `.model_fields_set`:\n\n```py\nif response.my_field is None:\n if \'my_field\' not in response.model_fields_set:\n print(\'Got json like {}, without a "my_field" key present at all.\')\n else:\n print(\'Got json like {"my_field": null}.\')\n```\n\n### Accessing raw response data (e.g. headers)\n\nThe "raw" Response object can be accessed by prefixing `.with_raw_response.` to any HTTP method call, e.g.,\n\n```py\nfrom retell import Retell\n\nclient = Retell()\nresponse = client.agent.with_raw_response.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n)\nprint(response.headers.get(\'X-My-Header\'))\n\nagent = response.parse() # get the object that `agent.create()` would have returned\nprint(agent.agent_id)\n```\n\nThese methods return an [`APIResponse`](https://github.com/RetellAI/retell-python-sdk/tree/main/src/retell/_response.py) object.\n\nThe async client returns an [`AsyncAPIResponse`](https://github.com/RetellAI/retell-python-sdk/tree/main/src/retell/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.\n\n#### `.with_streaming_response`\n\nThe above interface eagerly reads the full response body when you make the request, which may not always be what you want.\n\nTo stream the response body, use `.with_streaming_response` instead, which requires a context manager and only reads the response body once you call `.read()`, `.text()`, `.json()`, `.iter_bytes()`, `.iter_text()`, `.iter_lines()` or `.parse()`. In the async client, these are async methods.\n\n```python\nwith client.agent.with_streaming_response.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n) as response :\n print(response.headers.get(\'X-My-Header\'))\n\n for line in response.iter_lines():\n print(line)\n```\n\nThe context manager is required so that the response will reliably be closed.\n\n### Making custom/undocumented requests\n\nThis library is typed for convenient access to the documented API.\n\nIf you need to access undocumented endpoints, params, or response properties, the library can still be used.\n\n#### Undocumented endpoints\n\nTo make requests to undocumented endpoints, you can make requests using `client.get`, `client.post`, and other\nhttp verbs. Options on the client will be respected (such as retries) when making this request.\n\n```py\nimport httpx\n\nresponse = client.post(\n "/foo",\n cast_to=httpx.Response,\n body={"my_param": True},\n)\n\nprint(response.headers.get("x-foo"))\n```\n\n#### Undocumented request params\n\nIf you want to explicitly send an extra param, you can do so with the `extra_query`, `extra_body`, and `extra_headers` request\noptions.\n\n#### Undocumented response properties\n\nTo access undocumented response properties, you can access the extra fields like `response.unknown_prop`. You\ncan also get all the extra fields on the Pydantic model as a dict with\n[`response.model_extra`](https://docs.pydantic.dev/latest/api/base_model/#pydantic.BaseModel.model_extra).\n\n### Configuring the HTTP client\n\nYou can directly override the [httpx client](https://www.python-httpx.org/api/#client) to customize it for your use case, including:\n\n- Support for [proxies](https://www.python-httpx.org/advanced/proxies/)\n- Custom [transports](https://www.python-httpx.org/advanced/transports/)\n- Additional [advanced](https://www.python-httpx.org/advanced/clients/) functionality\n\n```python\nimport httpx\nfrom retell import Retell, DefaultHttpxClient\n\nclient = Retell(\n # Or use the `RETELL_BASE_URL` env var\n base_url="http://my.test.server.example.com:8083",\n http_client=DefaultHttpxClient(proxy="http://my.test.proxy.example.com", transport=httpx.HTTPTransport(local_address="0.0.0.0")),\n)\n```\n\nYou can also customize the client on a per-request basis by using `with_options()`:\n\n```python\nclient.with_options(http_client=DefaultHttpxClient(...))\n```\n\n### Managing HTTP resources\n\nBy default the library closes underlying HTTP connections whenever the client is [garbage collected](https://docs.python.org/3/reference/datamodel.html#object.__del__). You can manually close the client using the `.close()` method if desired, or with a context manager that closes when exiting.\n\n```py\nfrom retell import Retell\n\nwith Retell() as client:\n # make requests here\n ...\n\n# HTTP client is now closed\n```\n\n## Versioning\n\nThis package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions, though certain backwards-incompatible changes may be released as minor versions:\n\n1. Changes that only affect static types, without breaking runtime behavior.\n2. Changes to library internals which are technically public but not intended or documented for external use. _(Please open a GitHub issue to let us know if you are relying on such internals.)_\n3. Changes that we do not expect to impact the vast majority of users in practice.\n\nWe take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.\n\nWe are keen for your feedback; please open an [issue](https://www.github.com/RetellAI/retell-python-sdk/issues) with questions, bugs, or suggestions.\n\n### Determining the installed version\n\nIf you\'ve upgraded to the latest version but aren\'t seeing any new features you were expecting then your python environment is likely still using an older version.\n\nYou can determine the version that is being used at runtime with:\n\n```py\nimport retell\nprint(retell.__version__)\n```\n\n## Requirements\n\nPython 3.9 or higher.\n\n## Contributing\n\nSee [the contributing documentation](./CONTRIBUTING.md).\n',
2467
- },
2468
2464
  {
2469
2465
  language: 'typescript',
2470
2466
  content: "# Retell TypeScript API Library\n\n[![NPM version](https://img.shields.io/npm/v/retell-sdk.svg?label=npm%20(stable))](https://npmjs.org/package/retell-sdk) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/retell-sdk)\n\nThis library provides convenient access to the Retell REST API from server-side TypeScript or JavaScript.\n\n\n\nThe REST API documentation can be found on [docs.retellai.com](https://docs.retellai.com/). The full API of this library can be found in [api.md](api.md).\n\n\n\n## MCP Server\n\nUse the Retell MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.\n\n[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=%40retell-ai%2Fmcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkByZXRlbGwtYWkvbWNwLXNlcnZlciJdLCJlbnYiOnsiUkVURUxMX0FQSV9LRVkiOiJZT1VSX1JFVEVMTF9BUElfS0VZIn19)\n[![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22%40retell-ai%2Fmcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40retell-ai%2Fmcp-server%22%5D%2C%22env%22%3A%7B%22RETELL_API_KEY%22%3A%22YOUR_RETELL_API_KEY%22%7D%7D)\n\n> Note: You may need to set environment variables in your MCP client.\n\n## Installation\n\n```sh\nnpm install retell-sdk\n```\n\n\n\n## Usage\n\nThe full API of this library can be found in [api.md](api.md).\n\n<!-- prettier-ignore -->\n```js\nimport Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst agentResponse = await client.agent.create({\n response_engine: { llm_id: 'llm_234sdertfsdsfsdf', type: 'retell-llm' },\n voice_id: 'retell-Cimo',\n});\n\nconsole.log(agentResponse.agent_id);\n```\n\n\n\n### Request & Response types\n\nThis library includes TypeScript definitions for all request params and response fields. You may import and use them like so:\n\n<!-- prettier-ignore -->\n```ts\nimport Retell from 'retell-sdk';\n\nconst client = new Retell({\n apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted\n});\n\nconst params: Retell.AgentCreateParams = {\n response_engine: { llm_id: 'llm_234sdertfsdsfsdf', type: 'retell-llm' },\n voice_id: 'retell-Cimo',\n};\nconst agentResponse: Retell.AgentResponse = await client.agent.create(params);\n```\n\nDocumentation for each method, request param, and response field are available in docstrings and will appear on hover in most modern editors.\n\n\n\n\n\n## Handling errors\n\nWhen the library is unable to connect to the API,\nor if the API returns a non-success status code (i.e., 4xx or 5xx response),\na subclass of `APIError` will be thrown:\n\n<!-- prettier-ignore -->\n```ts\nconst agentResponse = await client.agent\n .create({\n response_engine: { llm_id: 'llm_234sdertfsdsfsdf', type: 'retell-llm' },\n voice_id: 'retell-Cimo',\n })\n .catch(async (err) => {\n if (err instanceof Retell.APIError) {\n console.log(err.status); // 400\n console.log(err.name); // BadRequestError\n console.log(err.headers); // {server: 'nginx', ...}\n } else {\n throw err;\n }\n });\n```\n\nError codes are as follows:\n\n| Status Code | Error Type |\n| ----------- | -------------------------- |\n| 400 | `BadRequestError` |\n| 401 | `AuthenticationError` |\n| 403 | `PermissionDeniedError` |\n| 404 | `NotFoundError` |\n| 422 | `UnprocessableEntityError` |\n| 429 | `RateLimitError` |\n| >=500 | `InternalServerError` |\n| N/A | `APIConnectionError` |\n\n### Retries\n\nCertain errors will be automatically retried 2 times by default, with a short exponential backoff.\nConnection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict,\n429 Rate Limit, and >=500 Internal errors will all be retried by default.\n\nYou can use the `maxRetries` option to configure or disable this:\n\n<!-- prettier-ignore -->\n```js\n// Configure the default for all requests:\nconst client = new Retell({\n maxRetries: 0, // default is 2\n});\n\n// Or, configure per-request:\nawait client.agent.create({\n response_engine: { llm_id: 'llm_234sdertfsdsfsdf', type: 'retell-llm' },\n voice_id: 'retell-Cimo',\n}, {\n maxRetries: 5,\n});\n```\n\n### Timeouts\n\nRequests time out after 1 minute by default. You can configure this with a `timeout` option:\n\n<!-- prettier-ignore -->\n```ts\n// Configure the default for all requests:\nconst client = new Retell({\n timeout: 20 * 1000, // 20 seconds (default is 1 minute)\n});\n\n// Override per-request:\nawait client.agent.create({\n response_engine: { llm_id: 'llm_234sdertfsdsfsdf', type: 'retell-llm' },\n voice_id: 'retell-Cimo',\n}, {\n timeout: 5 * 1000,\n});\n```\n\nOn timeout, an `APIConnectionTimeoutError` is thrown.\n\nNote that requests which time out will be [retried twice by default](#retries).\n\n\n\n\n\n## Advanced Usage\n\n### Accessing raw Response data (e.g., headers)\n\nThe \"raw\" `Response` returned by `fetch()` can be accessed through the `.asResponse()` method on the `APIPromise` type that all methods return.\nThis method returns as soon as the headers for a successful response are received and does not consume the response body, so you are free to write custom parsing or streaming logic.\n\nYou can also use the `.withResponse()` method to get the raw `Response` along with the parsed data.\nUnlike `.asResponse()` this method consumes the body, returning once it is parsed.\n\n<!-- prettier-ignore -->\n```ts\nconst client = new Retell();\n\nconst response = await client.agent\n .create({\n response_engine: { llm_id: 'llm_234sdertfsdsfsdf', type: 'retell-llm' },\n voice_id: 'retell-Cimo',\n })\n .asResponse();\nconsole.log(response.headers.get('X-My-Header'));\nconsole.log(response.statusText); // access the underlying Response object\n\nconst { data: agentResponse, response: raw } = await client.agent\n .create({\n response_engine: { llm_id: 'llm_234sdertfsdsfsdf', type: 'retell-llm' },\n voice_id: 'retell-Cimo',\n })\n .withResponse();\nconsole.log(raw.headers.get('X-My-Header'));\nconsole.log(agentResponse.agent_id);\n```\n\n### Logging\n\n> [!IMPORTANT]\n> All log messages are intended for debugging only. The format and content of log messages\n> may change between releases.\n\n#### Log levels\n\nThe log level can be configured in two ways:\n\n1. Via the `RETELL_LOG` environment variable\n2. Using the `logLevel` client option (overrides the environment variable if set)\n\n```ts\nimport Retell from 'retell-sdk';\n\nconst client = new Retell({\n logLevel: 'debug', // Show all log messages\n});\n```\n\nAvailable log levels, from most to least verbose:\n\n- `'debug'` - Show debug messages, info, warnings, and errors\n- `'info'` - Show info messages, warnings, and errors\n- `'warn'` - Show warnings and errors (default)\n- `'error'` - Show only errors\n- `'off'` - Disable all logging\n\nAt the `'debug'` level, all HTTP requests and responses are logged, including headers and bodies.\nSome authentication-related headers are redacted, but sensitive data in request and response bodies\nmay still be visible.\n\n#### Custom logger\n\nBy default, this library logs to `globalThis.console`. You can also provide a custom logger.\nMost logging libraries are supported, including [pino](https://www.npmjs.com/package/pino), [winston](https://www.npmjs.com/package/winston), [bunyan](https://www.npmjs.com/package/bunyan), [consola](https://www.npmjs.com/package/consola), [signale](https://www.npmjs.com/package/signale), and [@std/log](https://jsr.io/@std/log). If your logger doesn't work, please open an issue.\n\nWhen providing a custom logger, the `logLevel` option still controls which messages are emitted, messages\nbelow the configured level will not be sent to your logger.\n\n```ts\nimport Retell from 'retell-sdk';\nimport pino from 'pino';\n\nconst logger = pino();\n\nconst client = new Retell({\n logger: logger.child({ name: 'Retell' }),\n logLevel: 'debug', // Send all messages to pino, allowing it to filter\n});\n```\n\n### Making custom/undocumented requests\n\nThis library is typed for convenient access to the documented API. If you need to access undocumented\nendpoints, params, or response properties, the library can still be used.\n\n#### Undocumented endpoints\n\nTo make requests to undocumented endpoints, you can use `client.get`, `client.post`, and other HTTP verbs.\nOptions on the client, such as retries, will be respected when making these requests.\n\n```ts\nawait client.post('/some/path', {\n body: { some_prop: 'foo' },\n query: { some_query_arg: 'bar' },\n});\n```\n\n#### Undocumented request params\n\nTo make requests using undocumented parameters, you may use `// @ts-expect-error` on the undocumented\nparameter. This library doesn't validate at runtime that the request matches the type, so any extra values you\nsend will be sent as-is.\n\n```ts\nclient.agent.create({\n // ...\n // @ts-expect-error baz is not yet public\n baz: 'undocumented option',\n});\n```\n\nFor requests with the `GET` verb, any extra params will be in the query, all other requests will send the\nextra param in the body.\n\nIf you want to explicitly send an extra argument, you can do so with the `query`, `body`, and `headers` request\noptions.\n\n#### Undocumented response properties\n\nTo access undocumented response properties, you may access the response object with `// @ts-expect-error` on\nthe response object, or cast the response object to the requisite type. Like the request params, we do not\nvalidate or strip extra properties from the response from the API.\n\n### Customizing the fetch client\n\nBy default, this library expects a global `fetch` function is defined.\n\nIf you want to use a different `fetch` function, you can either polyfill the global:\n\n```ts\nimport fetch from 'my-fetch';\n\nglobalThis.fetch = fetch;\n```\n\nOr pass it to the client:\n\n```ts\nimport Retell from 'retell-sdk';\nimport fetch from 'my-fetch';\n\nconst client = new Retell({ fetch });\n```\n\n### Fetch options\n\nIf you want to set custom `fetch` options without overriding the `fetch` function, you can provide a `fetchOptions` object when instantiating the client or making a request. (Request-specific options override client options.)\n\n```ts\nimport Retell from 'retell-sdk';\n\nconst client = new Retell({\n fetchOptions: {\n // `RequestInit` options\n },\n});\n```\n\n#### Configuring proxies\n\nTo modify proxy behavior, you can provide custom `fetchOptions` that add runtime-specific proxy\noptions to requests:\n\n<img src=\"https://raw.githubusercontent.com/stainless-api/sdk-assets/refs/heads/main/node.svg\" align=\"top\" width=\"18\" height=\"21\"> **Node** <sup>[[docs](https://github.com/nodejs/undici/blob/main/docs/docs/api/ProxyAgent.md#example---proxyagent-with-fetch)]</sup>\n\n```ts\nimport Retell from 'retell-sdk';\nimport * as undici from 'undici';\n\nconst proxyAgent = new undici.ProxyAgent('http://localhost:8888');\nconst client = new Retell({\n fetchOptions: {\n dispatcher: proxyAgent,\n },\n});\n```\n\n<img src=\"https://raw.githubusercontent.com/stainless-api/sdk-assets/refs/heads/main/bun.svg\" align=\"top\" width=\"18\" height=\"21\"> **Bun** <sup>[[docs](https://bun.sh/guides/http/proxy)]</sup>\n\n```ts\nimport Retell from 'retell-sdk';\n\nconst client = new Retell({\n fetchOptions: {\n proxy: 'http://localhost:8888',\n },\n});\n```\n\n<img src=\"https://raw.githubusercontent.com/stainless-api/sdk-assets/refs/heads/main/deno.svg\" align=\"top\" width=\"18\" height=\"21\"> **Deno** <sup>[[docs](https://docs.deno.com/api/deno/~/Deno.createHttpClient)]</sup>\n\n```ts\nimport Retell from 'npm:retell-sdk';\n\nconst httpClient = Deno.createHttpClient({ proxy: { url: 'http://localhost:8888' } });\nconst client = new Retell({\n fetchOptions: {\n client: httpClient,\n },\n});\n```\n\n## Frequently Asked Questions\n\n## Semantic versioning\n\nThis package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions, though certain backwards-incompatible changes may be released as minor versions:\n\n1. Changes that only affect static types, without breaking runtime behavior.\n2. Changes to library internals which are technically public but not intended or documented for external use. _(Please open a GitHub issue to let us know if you are relying on such internals.)_\n3. Changes that we do not expect to impact the vast majority of users in practice.\n\nWe take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.\n\nWe are keen for your feedback; please open an [issue](https://www.github.com/RetellAI/retell-typescript-sdk/issues) with questions, bugs, or suggestions.\n\n## Requirements\n\nTypeScript >= 4.9 is supported.\n\nThe following runtimes are supported:\n\n- Web browsers (Up-to-date Chrome, Firefox, Safari, Edge, and more)\n- Node.js 20 LTS or later ([non-EOL](https://endoflife.date/nodejs)) versions.\n- Deno v1.28.0 or higher.\n- Bun 1.0 or later.\n- Cloudflare Workers.\n- Vercel Edge Runtime.\n- Jest 28 or greater with the `\"node\"` environment (`\"jsdom\"` is not supported at this time).\n- Nitro v2.6 or greater.\n\nNote that React Native is not supported at this time.\n\nIf you are interested in other runtime environments, please open or upvote an issue on GitHub.\n\n## Contributing\n\nSee [the contributing documentation](./CONTRIBUTING.md).\n",
2471
2467
  },
2468
+ {
2469
+ language: 'python',
2470
+ content: '# Retell Python API library\n\n<!-- prettier-ignore -->\n[![PyPI version](https://img.shields.io/pypi/v/retell-sdk.svg?label=pypi%20(stable))](https://pypi.org/project/retell-sdk/)\n\nThe Retell Python library provides convenient access to the Retell REST API from any Python 3.9+\napplication. The library includes type definitions for all request params and response fields,\nand offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).\n\n\n\n\n\n## MCP Server\n\nUse the Retell MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.\n\n[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=%40retell-ai%2Fmcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkByZXRlbGwtYWkvbWNwLXNlcnZlciJdLCJlbnYiOnsiUkVURUxMX0FQSV9LRVkiOiJZT1VSX1JFVEVMTF9BUElfS0VZIn19)\n[![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22%40retell-ai%2Fmcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40retell-ai%2Fmcp-server%22%5D%2C%22env%22%3A%7B%22RETELL_API_KEY%22%3A%22YOUR_RETELL_API_KEY%22%7D%7D)\n\n> Note: You may need to set environment variables in your MCP client.\n\n## Documentation\n\nThe REST API documentation can be found on [docs.retellai.com](https://docs.retellai.com/). The full API of this library can be found in [api.md](api.md).\n\n## Installation\n\n```sh\n# install from PyPI\npip install retell-sdk\n```\n\n## Usage\n\nThe full API of this library can be found in [api.md](api.md).\n\n```python\nimport os\nfrom retell import Retell\n\nclient = Retell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\n\nagent_response = client.agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n)\nprint(agent_response.agent_id)\n```\n\nWhile you can provide an `api_key` keyword argument,\nwe recommend using [python-dotenv](https://pypi.org/project/python-dotenv/)\nto add `RETELL_API_KEY="YOUR_RETELL_API_KEY"` to your `.env` file\nso that your API Key is not stored in source control.\n\n## Async usage\n\nSimply import `AsyncRetell` instead of `Retell` and use `await` with each API call:\n\n```python\nimport os\nimport asyncio\nfrom retell import AsyncRetell\n\nclient = AsyncRetell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n)\n\nasync def main() -> None:\n agent_response = await client.agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n )\n print(agent_response.agent_id)\n\nasyncio.run(main())\n```\n\nFunctionality between the synchronous and asynchronous clients is otherwise identical.\n\n### With aiohttp\n\nBy default, the async client uses `httpx` for HTTP requests. However, for improved concurrency performance you may also use `aiohttp` as the HTTP backend.\n\nYou can enable this by installing `aiohttp`:\n\n```sh\n# install from PyPI\npip install retell-sdk[aiohttp]\n```\n\nThen you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:\n\n```python\nimport os\nimport asyncio\nfrom retell import DefaultAioHttpClient\nfrom retell import AsyncRetell\n\nasync def main() -> None:\n async with AsyncRetell(\n api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted\n http_client=DefaultAioHttpClient(),\n) as client:\n agent_response = await client.agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n )\n print(agent_response.agent_id)\n\nasyncio.run(main())\n```\n\n\n\n## Using types\n\nNested request parameters are [TypedDicts](https://docs.python.org/3/library/typing.html#typing.TypedDict). Responses are [Pydantic models](https://docs.pydantic.dev) which also provide helper methods for things like:\n\n- Serializing back into JSON, `model.to_json()`\n- Converting to a dictionary, `model.to_dict()`\n\nTyped requests and responses provide autocomplete and documentation within your editor. If you would like to see type errors in VS Code to help catch bugs earlier, set `python.analysis.typeCheckingMode` to `basic`.\n\n\n\n## Nested params\n\nNested parameters are dictionaries, typed using `TypedDict`, for example:\n\n```python\nfrom retell import Retell\n\nclient = Retell()\n\nagent_response = client.agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n call_screening_option={\n "agent_identity": "Acme Health scheduling team",\n "call_purpose": "confirming your appointment for tomorrow",\n },\n)\nprint(agent_response.call_screening_option)\n```\n\n\n\n## Handling errors\n\nWhen the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `retell.APIConnectionError` is raised.\n\nWhen the API returns a non-success status code (that is, 4xx or 5xx\nresponse), a subclass of `retell.APIStatusError` is raised, containing `status_code` and `response` properties.\n\nAll errors inherit from `retell.APIError`.\n\n```python\nimport retell\nfrom retell import Retell\n\nclient = Retell()\n\ntry:\n client.agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n )\nexcept retell.APIConnectionError as e:\n print("The server could not be reached")\n print(e.__cause__) # an underlying Exception, likely raised within httpx.\nexcept retell.RateLimitError as e:\n print("A 429 status code was received; we should back off a bit.")\nexcept retell.APIStatusError as e:\n print("Another non-200-range status code was received")\n print(e.status_code)\n print(e.response)\n```\n\nError codes are as follows:\n\n| Status Code | Error Type |\n| ----------- | -------------------------- |\n| 400 | `BadRequestError` |\n| 401 | `AuthenticationError` |\n| 403 | `PermissionDeniedError` |\n| 404 | `NotFoundError` |\n| 422 | `UnprocessableEntityError` |\n| 429 | `RateLimitError` |\n| >=500 | `InternalServerError` |\n| N/A | `APIConnectionError` |\n\n### Retries\n\nCertain errors are automatically retried 2 times by default, with a short exponential backoff.\nConnection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict,\n429 Rate Limit, and >=500 Internal errors are all retried by default.\n\nYou can use the `max_retries` option to configure or disable retry settings:\n\n```python\nfrom retell import Retell\n\n# Configure the default for all requests:\nclient = Retell(\n # default is 2\n max_retries=0,\n)\n\n# Or, configure per-request:\nclient.with_options(max_retries = 5).agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n)\n```\n\n### Timeouts\n\nBy default requests time out after 1 minute. You can configure this with a `timeout` option,\nwhich accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/timeouts/#fine-tuning-the-configuration) object:\n\n```python\nfrom retell import Retell\n\n# Configure the default for all requests:\nclient = Retell(\n # 20 seconds (default is 1 minute)\n timeout=20.0,\n)\n\n# More granular control:\nclient = Retell(\n timeout=httpx.Timeout(60.0, read=5.0, write=10.0, connect=2.0),\n)\n\n# Override per-request:\nclient.with_options(timeout = 5.0).agent.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n)\n```\n\nOn timeout, an `APITimeoutError` is thrown.\n\nNote that requests that time out are [retried twice by default](#retries).\n\n\n\n## Advanced\n\n### Logging\n\nWe use the standard library [`logging`](https://docs.python.org/3/library/logging.html) module.\n\nYou can enable logging by setting the environment variable `RETELL_LOG` to `info`.\n\n```shell\n$ export RETELL_LOG=info\n```\n\nOr to `debug` for more verbose logging.\n\n### How to tell whether `None` means `null` or missing\n\nIn an API response, a field may be explicitly `null`, or missing entirely; in either case, its value is `None` in this library. You can differentiate the two cases with `.model_fields_set`:\n\n```py\nif response.my_field is None:\n if \'my_field\' not in response.model_fields_set:\n print(\'Got json like {}, without a "my_field" key present at all.\')\n else:\n print(\'Got json like {"my_field": null}.\')\n```\n\n### Accessing raw response data (e.g. headers)\n\nThe "raw" Response object can be accessed by prefixing `.with_raw_response.` to any HTTP method call, e.g.,\n\n```py\nfrom retell import Retell\n\nclient = Retell()\nresponse = client.agent.with_raw_response.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n)\nprint(response.headers.get(\'X-My-Header\'))\n\nagent = response.parse() # get the object that `agent.create()` would have returned\nprint(agent.agent_id)\n```\n\nThese methods return an [`APIResponse`](https://github.com/RetellAI/retell-python-sdk/tree/main/src/retell/_response.py) object.\n\nThe async client returns an [`AsyncAPIResponse`](https://github.com/RetellAI/retell-python-sdk/tree/main/src/retell/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.\n\n#### `.with_streaming_response`\n\nThe above interface eagerly reads the full response body when you make the request, which may not always be what you want.\n\nTo stream the response body, use `.with_streaming_response` instead, which requires a context manager and only reads the response body once you call `.read()`, `.text()`, `.json()`, `.iter_bytes()`, `.iter_text()`, `.iter_lines()` or `.parse()`. In the async client, these are async methods.\n\n```python\nwith client.agent.with_streaming_response.create(\n response_engine={\n "llm_id": "llm_234sdertfsdsfsdf",\n "type": "retell-llm",\n },\n voice_id="retell-Cimo",\n) as response :\n print(response.headers.get(\'X-My-Header\'))\n\n for line in response.iter_lines():\n print(line)\n```\n\nThe context manager is required so that the response will reliably be closed.\n\n### Making custom/undocumented requests\n\nThis library is typed for convenient access to the documented API.\n\nIf you need to access undocumented endpoints, params, or response properties, the library can still be used.\n\n#### Undocumented endpoints\n\nTo make requests to undocumented endpoints, you can make requests using `client.get`, `client.post`, and other\nhttp verbs. Options on the client will be respected (such as retries) when making this request.\n\n```py\nimport httpx\n\nresponse = client.post(\n "/foo",\n cast_to=httpx.Response,\n body={"my_param": True},\n)\n\nprint(response.headers.get("x-foo"))\n```\n\n#### Undocumented request params\n\nIf you want to explicitly send an extra param, you can do so with the `extra_query`, `extra_body`, and `extra_headers` request\noptions.\n\n#### Undocumented response properties\n\nTo access undocumented response properties, you can access the extra fields like `response.unknown_prop`. You\ncan also get all the extra fields on the Pydantic model as a dict with\n[`response.model_extra`](https://docs.pydantic.dev/latest/api/base_model/#pydantic.BaseModel.model_extra).\n\n### Configuring the HTTP client\n\nYou can directly override the [httpx client](https://www.python-httpx.org/api/#client) to customize it for your use case, including:\n\n- Support for [proxies](https://www.python-httpx.org/advanced/proxies/)\n- Custom [transports](https://www.python-httpx.org/advanced/transports/)\n- Additional [advanced](https://www.python-httpx.org/advanced/clients/) functionality\n\n```python\nimport httpx\nfrom retell import Retell, DefaultHttpxClient\n\nclient = Retell(\n # Or use the `RETELL_BASE_URL` env var\n base_url="http://my.test.server.example.com:8083",\n http_client=DefaultHttpxClient(proxy="http://my.test.proxy.example.com", transport=httpx.HTTPTransport(local_address="0.0.0.0")),\n)\n```\n\nYou can also customize the client on a per-request basis by using `with_options()`:\n\n```python\nclient.with_options(http_client=DefaultHttpxClient(...))\n```\n\n### Managing HTTP resources\n\nBy default the library closes underlying HTTP connections whenever the client is [garbage collected](https://docs.python.org/3/reference/datamodel.html#object.__del__). You can manually close the client using the `.close()` method if desired, or with a context manager that closes when exiting.\n\n```py\nfrom retell import Retell\n\nwith Retell() as client:\n # make requests here\n ...\n\n# HTTP client is now closed\n```\n\n## Versioning\n\nThis package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions, though certain backwards-incompatible changes may be released as minor versions:\n\n1. Changes that only affect static types, without breaking runtime behavior.\n2. Changes to library internals which are technically public but not intended or documented for external use. _(Please open a GitHub issue to let us know if you are relying on such internals.)_\n3. Changes that we do not expect to impact the vast majority of users in practice.\n\nWe take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.\n\nWe are keen for your feedback; please open an [issue](https://www.github.com/RetellAI/retell-python-sdk/issues) with questions, bugs, or suggestions.\n\n### Determining the installed version\n\nIf you\'ve upgraded to the latest version but aren\'t seeing any new features you were expecting then your python environment is likely still using an older version.\n\nYou can determine the version that is being used at runtime with:\n\n```py\nimport retell\nprint(retell.__version__)\n```\n\n## Requirements\n\nPython 3.9 or higher.\n\n## Contributing\n\nSee [the contributing documentation](./CONTRIBUTING.md).\n',
2471
+ },
2472
2472
  ];
2473
2473
  const INDEX_OPTIONS = {
2474
2474
  fields: [