> For a complete page index, fetch https://docs.synthflow.ai/llms.txt. For full documentation content, fetch https://docs.synthflow.ai/llms-full.txt.

# Update an agent

PUT https://api.synthflow.ai/v2/assistants/{model_id}
Content-Type: application/json

Use this endpoint to update an agent's name, phone number, or other parameters. 
 Only the provided parameters will be updated, and others won't be removed or changed.

Reference: https://docs.synthflow.ai/api-reference/platform-api/agents/update-assistant

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Servers

- `https://api.synthflow.ai/v2` (Global, default)
- `https://api.us.synthflow.ai/v2` (United States)
- `https://api.eu.synthflow.ai/v2` (European Union)

## Request

### Path parameters

- `model_id` (string, required) — Agent ID. You can find it on the agent’s page in your dashboard.

### Body (application/json)

This endpoint expects an object.

- `description` (string, optional) — Agent description.
- `phone_number` (string, optional) — The phone number attached to the agent.
- `external_webhook_url` (string, optional) — URL of the webhook that should receive data after the call, such as the transcript.
- `is_recording` (boolean, optional) — Whether the conversation should be recorded.
- `max_duration` (AssistantsModelIdPutRequestBodyContentApplicationJsonSchemaMaxDuration, optional)
- `voicemail_message` (AssistantsModelIdPutRequestBodyContentApplicationJsonSchemaVoicemailMessage, optional) — Configuration for the message left when a voicemail is detected. Requires `greeting_message_mode` to be set to `human`.
- `name` (string, optional) — Agent name.
- `agent` (Agent, optional)
- `end_call_reasons` (list of string, optional, deprecated) — Deprecated: use end_call_reasons_v2 instead. Custom conditions that trigger automatic call termination (simple string array format).

## Response

### 200

200

- `status` (string, optional) — Whether the request was successful.
- `response` (AssistantsModelIdPutResponsesContentApplicationJsonSchemaResponse, optional)
- `details` (AssistantsModelIdPutResponsesContentApplicationJsonSchemaDetails, optional)

## Errors

### 400 Bad Request Error

400

- `detail` (AssistantsModelIdPutResponsesContentApplicationJsonSchemaDetail, optional)

## Types

### AssistantsModelIdPutRequestBodyContentApplicationJsonSchemaMaxDuration

- `duration_seconds` (integer, optional) — Maximum length of the call in seconds.
- `is_enabled` (boolean, optional) — Whether there's a limit on call length.

### AssistantsModelIdPutRequestBodyContentApplicationJsonSchemaVoicemailMessage

Configuration for the message left when a voicemail is detected. Requires `greeting_message_mode` to be set to `human`.

- `enabled` (boolean, optional) — Whether voicemail message leaving is enabled.
- `mode` (enum, optional) — The mode used to generate the voicemail message.
  - Allowed values: `exact_message`, `prompt`
- `exact_message` (string, optional) — The exact message to leave on the voicemail. Used when mode is `exact_message`.
- `prompt` (string, optional) — A prompt used to generate the voicemail message. Used when mode is `prompt`.

### Agent

- `timezone` (enum, optional, default: Europe/Berlin) — The agent's timezone.
  - Allowed values: `Africa/Accra`, `Africa/Addis_Ababa`, `Africa/Algiers`, `Africa/Asmara`, `Africa/Bamako`, `Africa/Bangui`, `Africa/Banjul`, `Africa/Bissau`, `Africa/Blantyre`, `Africa/Brazzaville`, `Africa/Bujumbura`, `Africa/Cairo`, `Africa/Casablanca`, `Africa/Ceuta`, `Africa/Conakry`, `Africa/Dakar`, `Africa/Dar_es_Salaam`, `Africa/Djibouti`, `Africa/Douala`, `Africa/El_Aaiun`, `Africa/Freetown`, `Africa/Gaborone`, `Africa/Harare`, `Africa/Johannesburg`, `Africa/Juba`, `Africa/Kampala`, `Africa/Khartoum`, `Africa/Kigali`, `Africa/Kinshasa`, `Africa/Lagos`, `Africa/Libreville`, `Africa/Lome`, `Africa/Luanda`, `Africa/Lubumbashi`, `Africa/Lusaka`, `Africa/Malabo`, `Africa/Maputo`, `Africa/Maseru`, `Africa/Mbabane`, `Africa/Mogadishu`, `Africa/Monrovia`, `Africa/Nairobi`, `Africa/Ndjamena`, `Africa/Niamey`, `Africa/Nouakchott`, `Africa/Ouagadougou`, `Africa/Porto-Novo`, `Africa/Sao_Tome`, `Africa/Tripoli`, `Africa/Tunis`, `Africa/Windhoek`, `America/Adak`, `America/Anchorage`, `America/Anguilla`, `America/Antigua`, `America/Araguaina`, `America/Argentina/Buenos_Aires`, `America/Argentina/Catamarca`, `America/Argentina/Cordoba`, `America/Argentina/Jujuy`, `America/Argentina/La_Rioja`, `America/Argentina/Mendoza`, `America/Argentina/Rio_Gallegos`, `America/Argentina/Salta`, `America/Argentina/San_Juan`, `America/Argentina/San_Luis`, `America/Argentina/Tucuman`, `America/Argentina/Ushuaia`, `America/Aruba`, `America/Asuncion`, `America/Atikokan`, `America/Bahia`, `America/Bahia_Banderas`, `America/Barbados`, `America/Belem`, `America/Belize`, `America/Blanc-Sablon`, `America/Boa_Vista`, `America/Bogota`, `America/Boise`, `America/Cambridge_Bay`, `America/Campo_Grande`, `America/Cancun`, `America/Caracas`, `America/Cayenne`, `America/Cayman`, `America/Chicago`, `America/Chihuahua`, `America/Ciudad_Juarez`, `America/Costa_Rica`, `America/Creston`, `America/Cuiaba`, `America/Curacao`, `America/Danmarkshavn`, `America/Dawson`, `America/Dawson_Creek`, `America/Denver`, `America/Detroit`, `America/Dominica`, `America/Edmonton`, `America/Eirunepe`, `America/El_Salvador`, `America/Fort_Nelson`, `America/Fortaleza`, `America/Glace_Bay`, `America/Goose_Bay`, `America/Grand_Turk`, `America/Grenada`, `America/Guadeloupe`, `America/Guatemala`, `America/Guayaquil`, `America/Guyana`, `America/Halifax`, `America/Havana`, `America/Hermosillo`, `America/Indiana/Indianapolis`, `America/Indiana/Knox`, `America/Indiana/Marengo`, `America/Indiana/Petersburg`, `America/Indiana/Tell_City`, `America/Indiana/Vevay`, `America/Indiana/Vincennes`, `America/Indiana/Winamac`, `America/Inuvik`, `America/Iqaluit`, `America/Jamaica`, `America/Juneau`, `America/Kentucky/Louisville`, `America/Kentucky/Monticello`, `America/Kralendijk`, `America/La_Paz`, `America/Lima`, `America/Los_Angeles`, `America/Lower_Princes`, `America/Maceio`, `America/Managua`, `America/Manaus`, `America/Marigot`, `America/Martinique`, `America/Matamoros`, `America/Mazatlan`, `America/Menominee`, `America/Merida`, `America/Metlakatla`, `America/Mexico_City`, `America/Miquelon`, `America/Moncton`, `America/Monterrey`, `America/Montevideo`, `America/Montserrat`, `America/Nassau`, `America/New_York`, `America/Nome`, `America/Noronha`, `America/North_Dakota/Beulah`, `America/North_Dakota/Center`, `America/North_Dakota/New_Salem`, `America/Nuuk`, `America/Ojinaga`, `America/Panama`, `America/Paramaribo`, `America/Phoenix`, `America/Port_of_Spain`, `America/Port-au-Prince`, `America/Porto_Velho`, `America/Puerto_Rico`, `America/Punta_Arenas`, `America/Rankin_Inlet`, `America/Recife`, `America/Regina`, `America/Resolute`, `America/Rio_Branco`, `America/Santarem`, `America/Santiago`, `America/Santo_Domingo`, `America/Sao_Paulo`, `America/Scoresbysund`, `America/Sitka`, `America/St_Barthelemy`, `America/St_Johns`, `America/St_Kitts`, `America/St_Lucia`, `America/St_Thomas`, `America/St_Vincent`, `America/Swift_Current`, `America/Tegucigalpa`, `America/Thule`, `America/Tijuana`, `America/Toronto`, `America/Tortola`, `America/Vancouver`, `America/Whitehorse`, `America/Winnipeg`, `America/Yakutat`, `Antarctica/Casey`, `Antarctica/Davis`, `Antarctica/DumontDUrville`, `Antarctica/Macquarie`, `Antarctica/Mawson`, `Antarctica/McMurdo`, `Antarctica/Palmer`, `Antarctica/Rothera`, `Antarctica/Syowa`, `Antarctica/Troll`, `Antarctica/Vostok`, `Arctic/Longyearbyen`, `Asia/Aden`, `Asia/Almaty`, `Asia/Amman`, `Asia/Anadyr`, `Asia/Aqtau`, `Asia/Aqtobe`, `Asia/Ashgabat`, `Asia/Atyrau`, `Asia/Baghdad`, `Asia/Bahrain`, `Asia/Baku`, `Asia/Bangkok`, `Asia/Barnaul`, `Asia/Beirut`, `Asia/Bishkek`, `Asia/Brunei`, `Asia/Chita`, `Asia/Choibalsan`, `Asia/Colombo`, `Asia/Damascus`, `Asia/Dhaka`, `Asia/Dili`, `Asia/Dubai`, `Asia/Dushanbe`, `Asia/Famagusta`, `Asia/Gaza`, `Asia/Hebron`, `Asia/Ho_Chi_Minh`, `Asia/Hong_Kong`, `Asia/Hovd`, `Asia/Irkutsk`, `Asia/Jakarta`, `Asia/Jayapura`, `Asia/Jerusalem`, `Asia/Kabul`, `Asia/Kamchatka`, `Asia/Karachi`, `Asia/Kathmandu`, `Asia/Khandyga`, `Asia/Kolkata`, `Asia/Krasnoyarsk`, `Asia/Kuala_Lumpur`, `Asia/Kuching`, `Asia/Kuwait`, `Asia/Macau`, `Asia/Magadan`, `Asia/Makassar`, `Asia/Manila`, `Asia/Muscat`, `Asia/Nicosia`, `Asia/Novokuznetsk`, `Asia/Novosibirsk`, `Asia/Omsk`, `Asia/Oral`, `Asia/Phnom_Penh`, `Asia/Pontianak`, `Asia/Pyongyang`, `Asia/Qatar`, `Asia/Qostanay`, `Asia/Qyzylorda`, `Asia/Riyadh`, `Asia/Sakhalin`, `Asia/Samarkand`, `Asia/Seoul`, `Asia/Shanghai`, `Asia/Singapore`, `Asia/Srednekolymsk`, `Asia/Taipei`, `Asia/Tashkent`, `Asia/Tbilisi`, `Asia/Tehran`, `Asia/Thimphu`, `Asia/Tokyo`, `Asia/Tomsk`, `Asia/Ulaanbaatar`, `Asia/Urumqi`, `Asia/Ust-Nera`, `Asia/Vientiane`, `Asia/Vladivostok`, `Asia/Yakutsk`, `Asia/Yangon`, `Asia/Yekaterinburg`, `Asia/Yerevan`, `Atlantic/Azores`, `Atlantic/Bermuda`, `Atlantic/Canary`, `Atlantic/Cape_Verde`, `Atlantic/Faroe`, `Atlantic/Madeira`, `Atlantic/Reykjavik`, `Atlantic/South_Georgia`, `Atlantic/St_Helena`, `Atlantic/Stanley`, `Australia/Adelaide`, `Australia/Brisbane`, `Australia/Broken_Hill`, `Australia/Darwin`, `Australia/Eucla`, `Australia/Hobart`, `Australia/Lindeman`, `Australia/Lord_Howe`, `Australia/Melbourne`, `Australia/Perth`, `Australia/Sydney`, `Europe/Amsterdam`, `Europe/Andorra`, `Europe/Astrakhan`, `Europe/Athens`, `Europe/Belgrade`, `Europe/Berlin`, `Europe/Bratislava`, `Europe/Brussels`, `Europe/Bucharest`, `Europe/Budapest`, `Europe/Busingen`, `Europe/Chisinau`, `Europe/Copenhagen`, `Europe/Dublin`, `Europe/Gibraltar`, `Europe/Guernsey`, `Europe/Helsinki`, `Europe/Isle_of_Man`, `Europe/Istanbul`, `Europe/Jersey`, `Europe/Kaliningrad`, `Europe/Kirov`, `Europe/Kyiv`, `Europe/Lisbon`, `Europe/Ljubljana`, `Europe/London`, `Europe/Luxembourg`, `Europe/Madrid`, `Europe/Malta`, `Europe/Mariehamn`, `Europe/Minsk`, `Europe/Monaco`, `Europe/Moscow`, `Europe/Oslo`, `Europe/Paris`, `Europe/Podgorica`, `Europe/Prague`, `Europe/Riga`, `Europe/Rome`, `Europe/Samara`, `Europe/San_Marino`, `Europe/Sarajevo`, `Europe/Saratov`, `Europe/Simferopol`, `Europe/Skopje`, `Europe/Sofia`, `Europe/Stockholm`, `Europe/Tallinn`, `Europe/Tirane`, `Europe/Ulyanovsk`, `Europe/Vaduz`, `Europe/Vatican`, `Europe/Vienna`, `Europe/Vilnius`, `Europe/Volgograd`, `Europe/Warsaw`, `Europe/Zagreb`, `Europe/Zurich`, `Indian/Antananarivo`, `Indian/Chagos`, `Indian/Christmas`, `Indian/Cocos`, `Indian/Comoro`, `Indian/Kerguelen`, `Indian/Mahe`, `Indian/Maldives`, `Indian/Mauritius`, `Indian/Mayotte`, `Indian/Reunion`, `Pacific/Apia`, `Pacific/Auckland`, `Pacific/Bougainville`, `Pacific/Chatham`, `Pacific/Chuuk`, `Pacific/Easter`, `Pacific/Efate`, `Pacific/Fakaofo`, `Pacific/Fiji`, `Pacific/Funafuti`, `Pacific/Galapagos`, `Pacific/Gambier`, `Pacific/Guadalcanal`, `Pacific/Guam`, `Pacific/Honolulu`, `Pacific/Kanton`, `Pacific/Kiritimati`, `Pacific/Kosrae`, `Pacific/Kwajalein`, `Pacific/Majuro`, `Pacific/Marquesas`, `Pacific/Midway`, `Pacific/Nauru`, `Pacific/Niue`, `Pacific/Norfolk`, `Pacific/Noumea`, `Pacific/Pago_Pago`, `Pacific/Palau`, `Pacific/Pitcairn`, `Pacific/Pohnpei`, `Pacific/Port_Moresby`, `Pacific/Rarotonga`, `Pacific/Saipan`, `Pacific/Tahiti`, `Pacific/Tarawa`, `Pacific/Tongatapu`, `Pacific/Wake`, `Pacific/Wallis`, `US/Alaska`, `US/Central`, `US/Eastern`, `US/Hawaii`, `US/Mountain`, `US/Pacific`
- `working_hours` (CallTimeWindow, optional, nullable) — Business hours in the agent's `timezone`. Outside them, inbound calls follow `out_hours_action` and outbound calls are not placed. `null` removes the limit. On update, sending it replaces the stored schedule, and leaving it out keeps it.
- `out_hours_action` (string, optional, nullable) — ID of the action that handles inbound calls outside `working_hours`. It must be a call transfer or a custom action in the agent's workspace, and it does not need to be attached to the agent. `null` declines the call. An unknown ID or another type of action returns a `400` error.
- `voice_prompt` (string, optional) — Slightly alters the agent's intonation, talking speed or sentiment for a subtle yet noticeable effect.
- `voice_stability` (double, optional) — Range is 0 to 1. Lower settings may make the voice sound more expressive but less predictable, while higher settings make it sound steadier but less emotional.
- `voice_similarity_boost` (double, optional) — Range 0 to 1. Determines how closely the AI matches the original voice. Higher settings potentially including unwanted noise from the original recording.
- `voice_optimise_streaming_latency` (integer, optional) — Range 0 to 4. Optimises streaming latency
- `voice_style` (double, optional) — Range 0 to 1. Enhances the distinct characteristics of the original voice, but may slow down processing and make the voice less stable.
- `voice_use_speaker_boost` (boolean, optional) — Amplifies the voice’s likeness to the original speaker, which can slightly slow down the response time.
- `allowed_idle_time_seconds` (integer, optional) — The agent will disconnect after this period.
- `initial_pause_seconds` (integer, optional) — Duration before the agent starts speaking.
- `transcriber_keywords` (list of string, optional) — Add business terms to improve accuracy and recognition.
- `ring_pause_seconds` (integer, optional) — Ring time before the agent answers the call.
- `transcriber_provider` (enum, optional) — Speech-to-text provider used for transcription.
  - Allowed values: `deepgram`, `deepgram-nova-3`, `synthflow-stt`
- `transcriber_speech_recognition` (enum, optional) — Speech recognition mode for transcription speed vs quality.
  - Allowed values: `faster`, `high_accuracy`
- `background_noise` (AgentBackgroundNoise, optional) — Add background noise to make the call more natural.
- `noise_cancellation` (enum, optional) — Removes background noise on the caller's side. `advanced` (Voice Isolation) filters more aggressively than `standard`. Defaults to `advanced`.
  - Allowed values: `standard`, `advanced`
- `realistic_filler_words` (boolean, optional) — If enabled, the agent will be using realistic filler words (for example, "um").
- `is_transcript_disabled` (boolean, optional) — If set to true, conversations will not be transcribed.
- `redact_pii` (boolean, optional) — Whether to redact personally identifiable information (PII) from transcripts, post-call webhooks, and internal logs. Redacted data includes credit card numbers, CVVs, expiration dates, social security numbers, names, email addresses, phone numbers, and physical addresses.
- `synthesizer_filter_words` (list of any, optional) — Words or characters that the agent should not say.
- `end_call_reasons_v2` (list of AgentEndCallReasonsV2Items, optional) — Custom conditions that trigger automatic call termination with per-reason closing message control. When both end_call_reasons and end_call_reasons_v2 are present, v2 takes precedence.
- `voice_synthesizer` (enum, optional) — The engine used to synthesize voice.
  - Allowed values: `eleven_multilingual_v2`, `eleven_turbo_v2`, `eleven_turbo_v2_5`, `eleven_flash_v2`, `eleven_flash_v2_5`, `eleven_v3`, `eleven_v4`, `eleven_v4_turbo`
- `global_audio_tags` (string, optional) — Free-form audio tags that apply to every utterance for the duration of a call. Tags are wrapped in square brackets and set a persistent voice character such as an accent or base mood. Only supported when voice_synthesizer is eleven_v3, eleven_v4, or eleven_v4_turbo.
- `suppression_level` (double, optional) — Strength of Voice Isolation, from 0 to 1. Only takes effect when `noise_cancellation` is `advanced`. Defaults to `1` on create. See [how values map to Strength in the app](/call-configuration#strength).
- `interruption_fade_out` (integer, optional) — Each frame is 20 ms. When you interrupt the bot, the volume slowly goes down to 0 over that many frames. For example, 5 translates to a 100 ms fadeout.
- `voice_speed` (double, optional) — Adjust how fast or slow your agent will talk on the call.
- `voice_volume` (double, optional) — Adjust how loud or quite your agent will talk on the call.
- `min_words_to_interrupt` (enum, optional) — You can set how many words the human must speak before the AI will stop speaking and listening.
  - Allowed values: `0`, `1`, `2`, `3`, `4`, `5`
- `prompt` (string, optional) — Add variables in curly brackets. For example, \{your-variable}.
- `greeting_message` (string, optional) — The greeting message the agent will open the conversation with. You can add variables in curly brackets (for example, \{your-variable}).
- `greeting_message_mode` (enum, optional) — Controls how the agent delivers the initial greeting. `human`: the agent waits for the human to speak first. `agent_static`: the agent speaks `greeting_message` once the call is established. `agent_dynamic`: the agent generates a greeting from the prompt and speaks it once the call is established. Note: `voicemail_message` requires this to be set to `human`. Changing away from `human` while `voicemail_message` is enabled will fail.
  - Allowed values: `human`, `agent_static`, `agent_dynamic`
- `greeting_message_human_talk_timeout` (integer, optional) — The maximum number of seconds the agent waits for the human to speak first when `greeting_message_mode` is set to `human`. If the human does not speak within this time, the agent will start the conversation automatically.
- `llm` (enum, optional) — The LLM powering this agent.
  - Allowed values: `gpt-4.1`, `gpt-4.1-nano`, `gpt-4.1-mini`, `gpt-5-mini`, `gpt-5-nano`, `gpt-5.1`, `gpt-5.2`, `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.4-nano`, `gpt-6-luna`, `synthflow`, `synthflow-premium`
- `language` (enum, optional) — This agent's language. For the list of available languages, see Supported languages
  - Allowed values: `multi`, `en-US`, `bg`, `cs`, `de-DE`, `el`, `fi`, `fr-FR`, `es-ES`, `hu`, `it`, `fr`, `pt-BR`, `nl-NL`, `hi`, `zh-CN`, `no`, `sv-SE`, `da`, `da-DK`, `id`, `ja`, `ko`, `ms`, `ro`, `ru`, `sk`, `tr`, `uk`, `vi`, `th`, `pl`
- `voice_id` (string, optional) — Voice ID for this agent. To retrieve voice IDs, use the Get voices endpoint.
- `patience_level` (enum, optional) — Patience level of the agent.
  - Allowed values: `low`, `medium`, `high`
- `send_user_idle_reminders` (boolean, optional, default: false) — Enables or disables idle reminders.
- `reminder_after_idle_time_seconds` (integer, optional) — Time in seconds before sending an idle reminder.
- `reminder_after_idle_message` (string, optional) — The idle reminder message.
- `fallback_voice_id` (string, optional) — Voice ID for this agent. To retrieve voice IDs, use the Get voices endpoint.
- `fallback_provider` (enum, optional) — The provider for the fallback voice (elevenlabs, deepgram, or synthflow).
  - Allowed values: `elevenlabs`, `deepgram`, `synthflow`
- `fallback_model` (string, optional) — The model to be used by the fallback provider.
- `end_call_reasons` (list of string, optional, deprecated) — Deprecated: use end_call_reasons_v2 instead. Custom conditions that trigger automatic call termination (simple string array format). Works with both simple prompt and Flow Designer agents.

### AssistantsModelIdPutResponsesContentApplicationJsonSchemaResponse

- `model_id` (string, optional) — Agent ID. You can find it on the agent’s page in your dashboard.

### AssistantsModelIdPutResponsesContentApplicationJsonSchemaDetails

- `phone` (string, optional) — The phone number attached to the agent.
- `voice` (string, optional) — The agent's voice.

### AssistantsModelIdPutResponsesContentApplicationJsonSchemaDetail

- `status` (string, required)
- `description` (string, required)
- `request_id` (string, required)
- `category` (string, required)

### CallTimeWindow

Calling window evaluated in the agent's timezone. Recipients that come up while the window is shut wait for it to open. This does not replace the agent's working hours, which are checked separately when the call is placed, so a window that falls outside them fails every call. When neither is configured, recipients are dialed at any time.

- `enable` (boolean, optional) — Whether the window is enforced. Defaults to true when `weekly_hours` is provided.
- `weekly_hours` (map from string to list of CallTimeWindowWeeklyHoursItems, optional) — Keys are lowercase weekday names (`monday` to `sunday`). Each day holds a list of windows in `HH:MM` 24-hour format with `start` earlier than `end`. A missing or empty day means no calls on that day.

### AgentBackgroundNoise

Add background noise to make the call more natural.

- `enabled` (boolean, optional) — If enabled, the agent will add background noise.
- `type` (enum, optional) — What kind of background noise should be present.
  - Allowed values: `cafe`, `office`
- `volume` (integer, optional) — How loud the background noise should be.

### AgentEndCallReasonsV2Items

- `reason` (string, required) — The condition that triggers call termination.
- `closing_message_mode` (enum, optional) — Controls how the farewell message is generated. static: message is spoken verbatim. prompt: message is an instruction to the LLM. none: LLM generates its own farewell.
  - Allowed values: `static`, `prompt`, `none`
- `closing_message` (string, optional) — The closing message content. Interpretation depends on closing_message_mode.

### CallTimeWindowWeeklyHoursItems

- `start` (string, optional)
- `end` (string, optional)

## Examples

**Request**

```json
{
  "name": "Cindy",
  "agent": {
    "noise_cancellation": "advanced",
    "llm": "gpt-4.1-Mini",
    "language": "multi"
  }
}
```

**Response**

```json
{
  "status": "ok",
  "response": {
    "model_id": "1726005822670x239735712159542050"
  },
  "details": {
    "phone": "",
    "voice": ""
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.synthflow.ai/v2/assistants/1726005822670x239735712159542050"

payload = {
    "name": "Cindy",
    "agent": {
        "noise_cancellation": "advanced",
        "llm": "gpt-4.1-Mini",
        "language": "multi"
    }
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```go
package main

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

func main() {

	url := "https://api.synthflow.ai/v2/assistants/1726005822670x239735712159542050"

	payload := strings.NewReader("{\n  \"name\": \"Cindy\",\n  \"agent\": {\n    \"noise_cancellation\": \"advanced\",\n    \"llm\": \"gpt-4.1-Mini\",\n    \"language\": \"multi\"\n  }\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(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.synthflow.ai/v2/assistants/1726005822670x239735712159542050")

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  \"name\": \"Cindy\",\n  \"agent\": {\n    \"noise_cancellation\": \"advanced\",\n    \"llm\": \"gpt-4.1-Mini\",\n    \"language\": \"multi\"\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.put("https://api.synthflow.ai/v2/assistants/1726005822670x239735712159542050")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"name\": \"Cindy\",\n  \"agent\": {\n    \"noise_cancellation\": \"advanced\",\n    \"llm\": \"gpt-4.1-Mini\",\n    \"language\": \"multi\"\n  }\n}")
  .asString();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.synthflow.ai/v2/assistants/1726005822670x239735712159542050");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"name\": \"Cindy\",\n  \"agent\": {\n    \"noise_cancellation\": \"advanced\",\n    \"llm\": \"gpt-4.1-Mini\",\n    \"language\": \"multi\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "name": "Cindy",
  "agent": [
    "noise_cancellation": "advanced",
    "llm": "gpt-4.1-Mini",
    "language": "multi"
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.synthflow.ai/v2/assistants/1726005822670x239735712159542050")! 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()
```