Skip to main content
PUT
/
agent
/
{agent_id}
cURL
curl --request PUT \
  --url https://api.bolna.ai/agent/{agent_id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "agent_config": {
    "agent_name": "Alfred",
    "tasks": [
      {
        "tools_config": {
          "llm_agent": {
            "model": "gpt-4.1-mini",
            "max_tokens": 350,
            "agent_flow_type": "streaming",
            "family": "openai",
            "provider": "openai",
            "base_url": "https://api.openai.com/v1",
            "temperature": 0.3,
            "request_json": false,
            "routes": {
              "embedding_model": "snowflake/snowflake-arctic-embed-m",
              "routes": [
                {
                  "route_name": "politics",
                  "utterances": [
                    "Who do you think will win the elections?",
                    "Whom would you vote for?"
                  ],
                  "response": "Hey, thanks but I do not have opinions on politics",
                  "score_threshold": 0.9
                }
              ]
            }
          },
          "transcriber": {
            "provider": "deepgram",
            "model": "nova-3",
            "language": "hi",
            "stream": true,
            "sampling_rate": 16000,
            "encoding": "linear16",
            "endpointing": 250
          },
          "api_tools": null
        },
        "task_config": {
          "hangup_after_silence": 10,
          "incremental_delay": 400,
          "number_of_words_for_interruption": 2,
          "hangup_after_LLMCall": false,
          "call_cancellation_prompt": null,
          "backchanneling": false,
          "backchanneling_message_gap": 5,
          "backchanneling_start_delay": 5,
          "ambient_noise_track": "coffee-shop",
          "call_terminate": 90,
          "voicemail": false,
          "inbound_limit": -1,
          "whitelist_phone_numbers": null,
          "disallow_unknown_numbers": false
        }
      }
    ],
    "agent_welcome_message": "How are you doing Bruce?",
    "webhook_url": "https://my-webhook-url",
    "agent_type": "other"
  },
  "agent_prompts": {}
}
'
import requests

url = "https://api.bolna.ai/agent/{agent_id}"

payload = {
"agent_config": {
"agent_name": "Alfred",
"tasks": [
{
"tools_config": {
"llm_agent": {
"model": "gpt-4.1-mini",
"max_tokens": 350,
"agent_flow_type": "streaming",
"family": "openai",
"provider": "openai",
"base_url": "https://api.openai.com/v1",
"temperature": 0.3,
"request_json": False,
"routes": {
"embedding_model": "snowflake/snowflake-arctic-embed-m",
"routes": [
{
"route_name": "politics",
"utterances": ["Who do you think will win the elections?", "Whom would you vote for?"],
"response": "Hey, thanks but I do not have opinions on politics",
"score_threshold": 0.9
}
]
}
},
"transcriber": {
"provider": "deepgram",
"model": "nova-3",
"language": "hi",
"stream": True,
"sampling_rate": 16000,
"encoding": "linear16",
"endpointing": 250
},
"api_tools": None
},
"task_config": {
"hangup_after_silence": 10,
"incremental_delay": 400,
"number_of_words_for_interruption": 2,
"hangup_after_LLMCall": False,
"call_cancellation_prompt": None,
"backchanneling": False,
"backchanneling_message_gap": 5,
"backchanneling_start_delay": 5,
"ambient_noise_track": "coffee-shop",
"call_terminate": 90,
"voicemail": False,
"inbound_limit": -1,
"whitelist_phone_numbers": None,
"disallow_unknown_numbers": False
}
}
],
"agent_welcome_message": "How are you doing Bruce?",
"webhook_url": "https://my-webhook-url",
"agent_type": "other"
},
"agent_prompts": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
agent_config: {
agent_name: 'Alfred',
tasks: [
{
tools_config: {
llm_agent: {
model: 'gpt-4.1-mini',
max_tokens: 350,
agent_flow_type: 'streaming',
family: 'openai',
provider: 'openai',
base_url: 'https://api.openai.com/v1',
temperature: 0.3,
request_json: false,
routes: {
embedding_model: 'snowflake/snowflake-arctic-embed-m',
routes: [
{
route_name: 'politics',
utterances: ['Who do you think will win the elections?', 'Whom would you vote for?'],
response: 'Hey, thanks but I do not have opinions on politics',
score_threshold: 0.9
}
]
}
},
transcriber: {
provider: 'deepgram',
model: 'nova-3',
language: 'hi',
stream: true,
sampling_rate: 16000,
encoding: 'linear16',
endpointing: 250
},
api_tools: null
},
task_config: {
hangup_after_silence: 10,
incremental_delay: 400,
number_of_words_for_interruption: 2,
hangup_after_LLMCall: false,
call_cancellation_prompt: null,
backchanneling: false,
backchanneling_message_gap: 5,
backchanneling_start_delay: 5,
ambient_noise_track: 'coffee-shop',
call_terminate: 90,
voicemail: false,
inbound_limit: -1,
whitelist_phone_numbers: null,
disallow_unknown_numbers: false
}
}
],
agent_welcome_message: 'How are you doing Bruce?',
webhook_url: 'https://my-webhook-url',
agent_type: 'other'
},
agent_prompts: {}
})
};

fetch('https://api.bolna.ai/agent/{agent_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bolna.ai/agent/{agent_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'agent_config' => [
'agent_name' => 'Alfred',
'tasks' => [
[
'tools_config' => [
'llm_agent' => [
'model' => 'gpt-4.1-mini',
'max_tokens' => 350,
'agent_flow_type' => 'streaming',
'family' => 'openai',
'provider' => 'openai',
'base_url' => 'https://api.openai.com/v1',
'temperature' => 0.3,
'request_json' => false,
'routes' => [
'embedding_model' => 'snowflake/snowflake-arctic-embed-m',
'routes' => [
[
'route_name' => 'politics',
'utterances' => [
'Who do you think will win the elections?',
'Whom would you vote for?'
],
'response' => 'Hey, thanks but I do not have opinions on politics',
'score_threshold' => 0.9
]
]
]
],
'transcriber' => [
'provider' => 'deepgram',
'model' => 'nova-3',
'language' => 'hi',
'stream' => true,
'sampling_rate' => 16000,
'encoding' => 'linear16',
'endpointing' => 250
],
'api_tools' => null
],
'task_config' => [
'hangup_after_silence' => 10,
'incremental_delay' => 400,
'number_of_words_for_interruption' => 2,
'hangup_after_LLMCall' => false,
'call_cancellation_prompt' => null,
'backchanneling' => false,
'backchanneling_message_gap' => 5,
'backchanneling_start_delay' => 5,
'ambient_noise_track' => 'coffee-shop',
'call_terminate' => 90,
'voicemail' => false,
'inbound_limit' => -1,
'whitelist_phone_numbers' => null,
'disallow_unknown_numbers' => false
]
]
],
'agent_welcome_message' => 'How are you doing Bruce?',
'webhook_url' => 'https://my-webhook-url',
'agent_type' => 'other'
],
'agent_prompts' => [

]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.bolna.ai/agent/{agent_id}"

payload := strings.NewReader("{\n \"agent_config\": {\n \"agent_name\": \"Alfred\",\n \"tasks\": [\n {\n \"tools_config\": {\n \"llm_agent\": {\n \"model\": \"gpt-4.1-mini\",\n \"max_tokens\": 350,\n \"agent_flow_type\": \"streaming\",\n \"family\": \"openai\",\n \"provider\": \"openai\",\n \"base_url\": \"https://api.openai.com/v1\",\n \"temperature\": 0.3,\n \"request_json\": false,\n \"routes\": {\n \"embedding_model\": \"snowflake/snowflake-arctic-embed-m\",\n \"routes\": [\n {\n \"route_name\": \"politics\",\n \"utterances\": [\n \"Who do you think will win the elections?\",\n \"Whom would you vote for?\"\n ],\n \"response\": \"Hey, thanks but I do not have opinions on politics\",\n \"score_threshold\": 0.9\n }\n ]\n }\n },\n \"transcriber\": {\n \"provider\": \"deepgram\",\n \"model\": \"nova-3\",\n \"language\": \"hi\",\n \"stream\": true,\n \"sampling_rate\": 16000,\n \"encoding\": \"linear16\",\n \"endpointing\": 250\n },\n \"api_tools\": null\n },\n \"task_config\": {\n \"hangup_after_silence\": 10,\n \"incremental_delay\": 400,\n \"number_of_words_for_interruption\": 2,\n \"hangup_after_LLMCall\": false,\n \"call_cancellation_prompt\": null,\n \"backchanneling\": false,\n \"backchanneling_message_gap\": 5,\n \"backchanneling_start_delay\": 5,\n \"ambient_noise_track\": \"coffee-shop\",\n \"call_terminate\": 90,\n \"voicemail\": false,\n \"inbound_limit\": -1,\n \"whitelist_phone_numbers\": null,\n \"disallow_unknown_numbers\": false\n }\n }\n ],\n \"agent_welcome_message\": \"How are you doing Bruce?\",\n \"webhook_url\": \"https://my-webhook-url\",\n \"agent_type\": \"other\"\n },\n \"agent_prompts\": {}\n}")

req, _ := http.NewRequest("PUT", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.put("https://api.bolna.ai/agent/{agent_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"agent_config\": {\n \"agent_name\": \"Alfred\",\n \"tasks\": [\n {\n \"tools_config\": {\n \"llm_agent\": {\n \"model\": \"gpt-4.1-mini\",\n \"max_tokens\": 350,\n \"agent_flow_type\": \"streaming\",\n \"family\": \"openai\",\n \"provider\": \"openai\",\n \"base_url\": \"https://api.openai.com/v1\",\n \"temperature\": 0.3,\n \"request_json\": false,\n \"routes\": {\n \"embedding_model\": \"snowflake/snowflake-arctic-embed-m\",\n \"routes\": [\n {\n \"route_name\": \"politics\",\n \"utterances\": [\n \"Who do you think will win the elections?\",\n \"Whom would you vote for?\"\n ],\n \"response\": \"Hey, thanks but I do not have opinions on politics\",\n \"score_threshold\": 0.9\n }\n ]\n }\n },\n \"transcriber\": {\n \"provider\": \"deepgram\",\n \"model\": \"nova-3\",\n \"language\": \"hi\",\n \"stream\": true,\n \"sampling_rate\": 16000,\n \"encoding\": \"linear16\",\n \"endpointing\": 250\n },\n \"api_tools\": null\n },\n \"task_config\": {\n \"hangup_after_silence\": 10,\n \"incremental_delay\": 400,\n \"number_of_words_for_interruption\": 2,\n \"hangup_after_LLMCall\": false,\n \"call_cancellation_prompt\": null,\n \"backchanneling\": false,\n \"backchanneling_message_gap\": 5,\n \"backchanneling_start_delay\": 5,\n \"ambient_noise_track\": \"coffee-shop\",\n \"call_terminate\": 90,\n \"voicemail\": false,\n \"inbound_limit\": -1,\n \"whitelist_phone_numbers\": null,\n \"disallow_unknown_numbers\": false\n }\n }\n ],\n \"agent_welcome_message\": \"How are you doing Bruce?\",\n \"webhook_url\": \"https://my-webhook-url\",\n \"agent_type\": \"other\"\n },\n \"agent_prompts\": {}\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.bolna.ai/agent/{agent_id}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"agent_config\": {\n \"agent_name\": \"Alfred\",\n \"tasks\": [\n {\n \"tools_config\": {\n \"llm_agent\": {\n \"model\": \"gpt-4.1-mini\",\n \"max_tokens\": 350,\n \"agent_flow_type\": \"streaming\",\n \"family\": \"openai\",\n \"provider\": \"openai\",\n \"base_url\": \"https://api.openai.com/v1\",\n \"temperature\": 0.3,\n \"request_json\": false,\n \"routes\": {\n \"embedding_model\": \"snowflake/snowflake-arctic-embed-m\",\n \"routes\": [\n {\n \"route_name\": \"politics\",\n \"utterances\": [\n \"Who do you think will win the elections?\",\n \"Whom would you vote for?\"\n ],\n \"response\": \"Hey, thanks but I do not have opinions on politics\",\n \"score_threshold\": 0.9\n }\n ]\n }\n },\n \"transcriber\": {\n \"provider\": \"deepgram\",\n \"model\": \"nova-3\",\n \"language\": \"hi\",\n \"stream\": true,\n \"sampling_rate\": 16000,\n \"encoding\": \"linear16\",\n \"endpointing\": 250\n },\n \"api_tools\": null\n },\n \"task_config\": {\n \"hangup_after_silence\": 10,\n \"incremental_delay\": 400,\n \"number_of_words_for_interruption\": 2,\n \"hangup_after_LLMCall\": false,\n \"call_cancellation_prompt\": null,\n \"backchanneling\": false,\n \"backchanneling_message_gap\": 5,\n \"backchanneling_start_delay\": 5,\n \"ambient_noise_track\": \"coffee-shop\",\n \"call_terminate\": 90,\n \"voicemail\": false,\n \"inbound_limit\": -1,\n \"whitelist_phone_numbers\": null,\n \"disallow_unknown_numbers\": false\n }\n }\n ],\n \"agent_welcome_message\": \"How are you doing Bruce?\",\n \"webhook_url\": \"https://my-webhook-url\",\n \"agent_type\": \"other\"\n },\n \"agent_prompts\": {}\n}"

response = http.request(request)
puts response.read_body
{
  "agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "status": "updated"
}
{
"error": 123,
"message": "<string>"
}
These APIs have now been deprecated.Please use the latest v2 APIs.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

agent_id
string<uuid>
required

Body

application/json

Update an agent

agent_config
object
required

Configuration of the agent

agent_prompts
object
required

Prompts to be provided to the agent. It can have multiple tasks of the form task_<task_id>

Response

agent status response

agent_id
string<uuid>
status
enum<string>
Available options:
updated
Example:

"updated"