> ## Documentation Index
> Fetch the complete documentation index at: https://www.voiceflow.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# vf widget update - Update widget

> vf widget update: update widget. Requires --environment-alias and --project-id, with a worked example.

Update the widget configuration. `chat`, `voice` and `common` are merged one level deep into the stored settings, except `common.primaryColor`, which merges a level deeper so that `color` and `palette` can be sent independently; `security` is replaced in full. `security` and `chat.disclaimer` require the widget-security entitlement, and the premium appearance fields require the Webchat Premium one.

## Usage

```bash
vf widget update [flags]
```

## Examples

```bash
  vf widget update --project-id <id> --environment-alias <value>
```

## Flags

```text
      --body string                Request body as JSON (alternative to individual flags). Can also be provided via stdin.
      --chat string                Chat-surface fields to change, merged one level deep into the stored 'chat' block: what you send replaces its stored counterpart and everything else is kept. A nested object ('banner', 'headerImage', 'disclaimer', 'csat', …) replaces the stored one outright, so send it complete. 'placeholderText' and 'aiDisclaimer' need the Webchat Premium entitlement and 'disclaimer' the widget-security one: without it the whole request is refused with 403 and nothing is written, including the other fields sent alongside it.
      --common string              Shared-chrome fields to change, merged one level deep into the stored 'common' block. A nested object ('launcher', 'footerLink') replaces the stored one outright, so send it complete. 'primaryColor' is the exception and merges too: send 'color' on its own to recolor the widget and the shade palette is regenerated from it, send 'palette' on its own to hand-tune the shades against the stored color, or send both together. 'poweredBy', 'fontFamily', 'footerLink' and 'primaryColor.palette' need the Webchat Premium entitlement — 'primaryColor.color' on its own does not — and without it the whole request is refused with 403 and nothing is written, including the other fields sent alongside it.
  -e, --environment-alias string   [required]
  -h, --help                       help for update
  -p, --project-id string          [required]
  -s, --security string            Replaces the stored security block in full — unlike the other blocks it has no partial form. Requires a plan entitlement: without one the whole request is refused with 403 and nothing is written, including the other fields sent alongside it.
  -t, --type string                Switches the embed between the text 'chat' surface and the click-to-call 'voice' surface. The surface you switch away from is kept as it was, so switching back later restores it. (options: chat, voice)
  -v, --voice string               Voice-surface fields to change, merged one level deep into the stored 'voice' block. 'content' is a nested object: it replaces the stored one outright, so send every line of call-screen copy, not just the one you are changing.
```

## Global flags

These flags are inherited from the parent command and work on every invocation.

```text
      --agent-mode             Enable structured errors and default TOON output for AI coding agents. Automatically enabled when a known agent environment is detected (CLAUDE_CODE, CURSOR_AGENT, etc.). Use --agent-mode=false to disable.
      --color string           Control colored output: auto (color when output is a TTY), always, or never. Respects NO_COLOR and FORCE_COLOR env vars. (default "auto")
  -d, --debug                  Log request and response diagnostics to stderr
      --dry-run                Preview the request that would be sent without executing it (output to stderr)
  -H, --header stringArray     Set a custom HTTP request header (format: "Key: Value"). Can be specified multiple times.
      --include-headers        Include HTTP response headers in the output
  -q, --jq string              Filter and transform output using a jq expression (e.g., '.name', '.items[] | .id')
      --no-interactive         Disable all interactive features (auto-prompting, explorer auto-launch, TUI forms)
  -o, --output-format string   Specify the output format. Options: pretty, json, yaml, table, toon. (default "pretty")
      --server-url string      Override the default server URL
      --timeout string         HTTP request timeout (e.g., 30s, 5m, 100ms)
      --token string           Voiceflow bearer token
      --usage                  Print the CLI Usage schema in KDL format
```

## See also

- [vf widget](/docs/cli/commands/widget) - Operations for widget
