---
title: "Update a webchat widget."
method: PUT
path: "/webchat_widgets/{id}"
tags: ["Webchat"]
---

# Update a webchat widget.

`PUT /webchat_widgets/{id}`

Updates an existing webchat widget's basic info and returns the updated resource.

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `name` string, required — Name of the widget.
  - `welcome_message` string, required — The message shown to the visitor when the widget loads.
  - `session_flow_id` string, uuid, required — Fires once per Session, at session creation/start. Returned from the `POST /flows` or `GET /flows` response.
  - `message_flow_id` string, uuid — Optional. Fires on every inbound message, independently. Returned from the `POST /flows` or `GET /flows` response.
  - `session_idle_timeout` integer — Session idle timeout in seconds before the session is automatically ended.
  - `theme_config` WebchatManagerWidgetThemeConfig — Cosmetic, customer-editable widget appearance settings. All fields are optional; omitted fields fall back to the platform default (blue bubble, no logo, bottom-right).
    - `primary_color` string — Hex color code for the widget's primary color.
    - `logo_url` string, uri — HTTPS URL of the logo image displayed in the widget header.
    - `position` 'bottom_right' | 'bottom_left' — Where the floating bubble/panel renders on the customer's page.

## Response `200`

Details of the updated widget.

- WebchatManagerWidget — A customer's webchat widget configuration. Also issues a direct hash for anonymous visitor authentication.
  - `id` string, uuid, required — The unique identifier of the widget. Returned from the `POST /widgets` or `GET /widgets` response.
  - `customer_id` string, uuid, required — The unique identifier of the associated customer. Returned from the `GET /customers` response.
  - `name` string, required — Name of the widget.
  - `status` 'active' | 'inactive', required — The status of the widget.
  - `welcome_message` string, required — The message shown to the visitor when the widget loads.
  - `session_flow_id` string, uuid, required — Fires once per Session, at session creation/start (POST /webchat_sessions) -- bin-conversation-manager owns Create+Execute for this Flow's activeflow. Returned from the `POST /flows` or `GET /flows` response.
  - `message_flow_id` string, uuid — Optional. When set, fires an independent, stateless activeflow on EVERY inbound message (mirrors bin-conversation-manager's Account.MessageFlowID/Number.MessageFlowID pattern for LINE/WhatsApp/SMS). Returned from the `POST /flows` or `GET /flows` response.
  - `session_idle_timeout` integer, required — Session idle timeout in seconds before the session is automatically ended.
  - `theme_config` WebchatManagerWidgetThemeConfig — Cosmetic, customer-editable widget appearance settings. All fields are optional; omitted fields fall back to the platform default (blue bubble, no logo, bottom-right).
    - `primary_color` string — Hex color code for the widget's primary color.
    - `logo_url` string, uri — HTTPS URL of the logo image displayed in the widget header.
    - `position` 'bottom_right' | 'bottom_left' — Where the floating bubble/panel renders on the customer's page.
  - `direct_hash` string — Hash used by the embed script (data-hash attribute) to authenticate anonymous visitors via POST /auth/boot. Returned on every response (GET, List, Create, Update, direct_hash_regenerate) -- this value is embedded directly in the customer's public website HTML by design, so it is not a traditional secret; hiding it from GET responses would only make it harder for the customer's own admins to retrieve it.
  - `tm_create` string, date-time — Timestamp when the widget was created.
  - `tm_update` string, date-time — Timestamp when the widget was last updated.
  - `tm_delete` string, date-time — Timestamp when the widget was deleted.

## Other responses

- `400` — Invalid request (INVALID_ARGUMENT).
- `401` — Authentication required (UNAUTHENTICATED).
- `403` — Insufficient permission (PERMISSION_DENIED).
- `404` — Resource not found (NOT_FOUND).
- `500` — Internal error (INTERNAL).

## Changes

- **2026-07-17** `37603aee58ea` — 2 breaking, 1 warning, 4 info
  - added the new required request property `session_flow_id`
  - removed the required property `flow_id` from the response with the `200` status
  - removed the request property `flow_id`
  - added the new optional request property `message_flow_id`
  - …3 more
- **2026-07-16** `39e5a5e6214c` — 1 info
  - endpoint added
- **2026-05-30** `995c56ba9219` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/voipbin/apis/voipbin-api/changes/webchat_widgets/:id/put.md)

---

[API](https://skmtc.dev/voipbin/apis/voipbin-api.md) · [All operations](https://skmtc.dev/voipbin/apis/voipbin-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/voipbin/voipbin-api/revisions/37603aee58ea/schema)
