> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.jambonz.org/reference/rest-call-control/calls/update-call/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.jambonz.org/_mcp/server. # update a call PUT https://api.jambonz.cloud/v1/Accounts/{AccountSid}/Calls/{CallSid} Content-Type: application/json Reference: https://docs.jambonz.org/reference/rest-call-control/calls/update-call ## Authentication - `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer `, where token is your auth token. ## Request ### Path parameters - `AccountSid` (string, required) - `CallSid` (string, required) ### Body (application/json) This endpoint expects an object. - `call_hook` (Webhook, optional) - `child_call_hook` (Webhook, optional) - `call_status` (enum, optional) - Allowed values: `completed`, `no-answer` - `conf_mute_status` (enum, optional) - Allowed values: `mute`, `unmute` - `conf_hold_status` (enum, optional) - Allowed values: `hold`, `unhold` - `listen_status` (enum, optional) - Allowed values: `pause`, `silence`, `resume` - `mute_status` (enum, optional) - Allowed values: `mute`, `unmute` - `transcribe_status` (enum, optional) - Allowed values: `pause`, `resume` - `whisper` (AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaWhisper, optional) - `sip_request` (AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaSipRequest, optional) - `record` (AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaRecord, optional) - `conferenceParticipantAction` (AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaConferenceParticipantAction, optional) - `dtmf` (AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaDtmf, optional) - `stream_status` (enum, optional) — Pause or resume an active stream verb. - Allowed values: `pause`, `silence`, `resume` - `tag` (map from string to any, optional) — Set customer data tags on the call. Freeform key-value object. - `dub` (AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaDub, optional) — Add or remove additional audio tracks on the call. - `boostAudioSignal` (AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaBoostAudioSignal, optional) — Boost audio signal by specified decibels (e.g. 6 or "6dB"). - `media_path` (enum, optional) — Update the media path during an active Dial verb. - Allowed values: `no-media`, `partial-media`, `full-media` - `noise_isolation_status` (enum, optional) — Enable or disable noise isolation on the call. - Allowed values: `enable`, `disable` - `noise_isolation_vendor` (string, optional) — Noise isolation vendor. Default is krisp. - `noise_isolation_level` (double, optional) — Noise isolation level 0-100. Default is 100. - `noise_isolation_model` (string, optional) — Noise isolation model identifier. - `agent_update` (AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaAgentUpdate, optional) — Update an active agent verb mid-conversation. ## Response ### 200 Accepted ### 202 Accepted ## Errors ### 400 Bad Request Error bad request - `any` ### 404 Not Found Error call not found - `any` ### 422 Unprocessable Entity Error unprocessable entity - `msg` (string, required) ### 500 Internal Server Error system error - `msg` (string, required) ## Types ### Webhook - `url` (string, required) - `webhook_sid` (string, optional) - `method` (enum, optional) - Allowed values: `get`, `post` - `username` (string, optional) - `password` (string, optional) ### AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaWhisper ### AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaSipRequest - `method` (string, optional) - `content_type` (string, optional) - `content` (string, optional) - `headers` (AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaSipRequestHeaders, optional) ### AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaRecord - `action` (enum, optional) - Allowed values: `startCallRecording`, `stopCallRecording`, `pauseCallRecording`, `resumeCallRecording` - `type` (enum, optional, default: siprec) - Allowed values: `cloud`, `siprec` - `recordingID` (string, optional) — used with startCallRecording and SIPREC - `siprecServerURL` (string, optional) — used with startCallRecording and SIPREC - `silence` (boolean, optional, default: false) — when pausing recording the file will be padded with silence ### AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaConferenceParticipantAction - `action` (enum, optional) - Allowed values: `tag`, `untag`, `coach`, `uncoach`, `mute`, `unmute`, `hold`, `unhold` - `tag` (string, optional) ### AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaDtmf - `digit` (enum, required) — Single digit to send - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `0`, `*`, `#` - `duration` (integer, optional, default: 250) — Duration of the tone in ms ### AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaDub Add or remove additional audio tracks on the call. - `action` (enum, required) - Allowed values: `startDub`, `stopDub` - `track` (string, required) — Track name identifier. - `play` (string, optional) — Audio URL to play. - `say` (AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaDubSay, optional) — TTS configuration. - `loop` (boolean, optional) — Whether to loop playback. - `gain` (double, optional) — Gain in decibels. ### AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaBoostAudioSignal Boost audio signal by specified decibels (e.g. 6 or "6dB"). ### AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaAgentUpdate Update an active agent verb mid-conversation. - `type` (enum, required) — The type of agent update to perform. - Allowed values: `update_instructions`, `inject_context`, `update_tools`, `generate_reply` - `instructions` (string, optional) — New system prompt (for update_instructions). - `messages` (list of AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaAgentUpdateMessagesItems, optional) — Messages to append to conversation history (for inject_context). - `tools` (list of AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaAgentUpdateToolsItems, optional) — Replacement tool definitions (for update_tools). - `user_input` (string, optional) — Text to prompt the LLM with (for generate_reply). - `interrupt` (boolean, optional, default: false) — Whether to interrupt current assistant speech (for generate_reply). ### AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaWhisper0 - `verb` (enum, optional) — See [Say](/verbs/verbs/say) or [Play](/verbs/verbs/play) for details of the properties - Allowed values: `say`, `play` ### AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaSipRequestHeaders ### AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaDubSay TTS configuration. ### AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaAgentUpdateMessagesItems - `role` (enum, required) - Allowed values: `user`, `assistant` - `content` (string, required) ### AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaAgentUpdateToolsItems - `name` (string, optional) - `description` (string, optional) - `parameters` (AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaAgentUpdateToolsItemsParameters, optional) ### AccountsAccountSidCallsCallSidPutRequestBodyContentApplicationJsonSchemaAgentUpdateToolsItemsParameters ## Examples ### Example 1 **Request** ```json {} ``` **Response** ```json {} ``` **SDK Code** ```python import requests url = "https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid" payload = {} headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.put(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid'; const options = { method: 'PUT', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid" payload := strings.NewReader("{}") req, _ := http.NewRequest("PUT", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Put.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.put("https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php request('PUT', 'https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid', [ 'body' => '{}', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid"); var request = new RestRequest(Method.PUT); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = [] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "PUT" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` ### Example 2 **Request** ```json {} ``` **Response** ```json {} ``` **SDK Code** ```python import requests url = "https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid" payload = {} headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.put(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid'; const options = { method: 'PUT', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid" payload := strings.NewReader("{}") req, _ := http.NewRequest("PUT", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Put.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.put("https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php request('PUT', 'https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid', [ 'body' => '{}', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid"); var request = new RestRequest(Method.PUT); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = [] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.jambonz.cloud/v1/Accounts/AccountSid/Calls/CallSid")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "PUT" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```