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
vf widget update [flags]Examples
vf widget update --project-id <id> --environment-alias <value>Flags
--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.
--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 formatSee also
- vf widget - Operations for widget