Skip to main content
This page is the complete reference for RinggWidgetConfig, the object passed as the first argument to RinggWidgetController. Configure assistant behavior, tools and prompts in the dashboard; use this object for app-level runtime settings. See Flutter for installation and the integration steps.
Every field except agentId is optional and nullable. A null field falls back to the shared default.

Identity and auth

authorization ships inside your app binary and can be extracted from it. Use only the webcall public key generated for that assistant, never a backend integration key, and keep the assistant’s allowed clients list tight.

Panel content and mode

Variables

variables are forwarded to the assistant as custom_args_values and fill {{placeholders}} in its prompts. Values are sent verbatim, so the full JSON value space is accepted.
WidgetVariables is Map<String, Object>. Set variables when you build the controller; to change them for a new conversation, build a new controller.

Theme

theme takes a WidgetTheme with thirteen fields. Colors are CSS color strings, not Dart Color objects, so the same theme values work unchanged across web, React Native and Flutter. primaryColor and agentBubbleColor also accept CSS gradients.

Buttons

PortableStyles is the cross-platform style subset: height, width, backgroundColor, padding, borderRadius. Sizes accept a number or a CSS string, so '48px' and 48 both work.

Voice call view

Feedback screen

Set bypassFeedbackScreen: true to skip the screen entirely.

Chat extras

Web-only options

These exist on the type because the config is shared with the web widget. They are ignored on Flutter, where the panel sizes itself to the device.

Defaults

Every optional field falls back to a shared default. These values are generated from one source for all platforms, so the web, React Native and Flutter widgets behave identically when a field is left unset. Theme values not listed here fall back to the packaged Ringg palette.

Caller identity

The backend allow-lists an assistant’s callers by the Origin header. Browsers attach one automatically, which is how domain whitelisting works for the web widget. Native HTTP sends nothing, so a webcall request without a caller identity is refused before authentication is even considered. Add the value to the assistant’s allowed clients under Agent → Webcall → Install & domains in the dashboard. Application ids differ per platform and per build flavor (.debug, .staging, .dev), so every build you ship needs its own entry. The value that was sent appears in the refused-call response, ready to paste.
Hybrid WebView runtimes report a shared identity (capacitor://localhost, ionic://localhost, file://) that is the same for every app built on that runtime. Allowing one admits all of them.
On Flutter this is handled for you. The package reads the running app’s id through package_info_plus and sends <platform>://<bundleId>: Set clientOrigin only when you want to pin one value, for example a single canonical string across build flavors. It wins over the derived one.
Supplying your own ControllerPorts(httpClient: …) opts out of the default header. Wrap your client to keep it: