Skip to main content
Assistants can end a reply with one or more suggested next-user-messages. When a user clicks a suggestion, it is submitted back to the agent as if the user typed it themselves — no extra round-trip, no instruction to “just say X.” This turns a reply into a guided fork in the conversation. There are four tags for this, two compact (hidden behind a trigger) and two inline (all options visible at once):

airiaMessageButton

A single clickable suggestion. One tap → submit.

airiaMessageDropdown

One trigger, a dropdown of suggestions. Clicking an option submits it immediately.

airiaMessageRadios

An inline radio group plus a Send button. User picks one, then submits.

airiaMessageCheckboxes

One trigger, a checkbox list plus a Send button. Picks are joined into one user message.
All four work in /chat, /catalog/chat, and the embeddable chat widget. They are emitted by the assistant as XML-like tags in the markdown reply; the chat UI parses them and swaps in interactive React components.

When to use which

1

One obvious follow-up

Use airiaMessageButton. Best when there is a clear next question and you want to minimize friction.
2

A small list of alternatives, pick one (compact)

Use airiaMessageDropdown. Best for 3–8 mutually-exclusive follow-ups with longer labels, or when conversation density matters and you want the suggestions tucked behind a trigger.
3

A small list of alternatives, pick one (inline)

Use airiaMessageRadios. Best for 2–5 short labels the user benefits from comparing at a glance before committing. Same single-select intent as the dropdown, but always visible.
4

A list where combining makes sense

Use airiaMessageCheckboxes. Best when the user might legitimately want to ask about several topics at once (e.g., “tell me about pricing and features”).
Rule of thumb: one suggestion block per reply. Stacking several is visual noise, and users interpret multiple suggestion surfaces as indecision from the assistant.

airiaMessageButton

A single suggestion. Click submits buttonText (or the tag body if buttonText is empty) as a new user message.
Attributes The tag body is the message that gets submitted on click. If buttonText is provided, it becomes the label and the body becomes the submitted message; if not, the body is used for both.

airiaMessageDropdown

A dropdown of single-submit suggestions. The tag body is a JSON array of {label, message} objects — label is what the user sees in the menu, message is what gets submitted when they click that option.
Attributes Body schema
Clicking an option behaves exactly like clicking an airiaMessageButton — it submits the message value as a new user turn.
If the body is not valid JSON or not an array of {label, message} objects, the dropdown silently renders nothing rather than crashing the message. Always emit valid JSON.

airiaMessageRadios

An inline radio group rendered directly in the assistant message, plus an explicit Send button below the options. The user picks one option and can change their mind freely until they click Send — only then is the selected message submitted as a new user turn. Same single-select intent as airiaMessageDropdown, but always-visible rather than hidden behind a trigger.
Attributes Body schema — identical to airiaMessageDropdown:
Prefer radios over a dropdown when you have 2–5 short labels and want the user to see every option at once. Prefer a dropdown when labels are longer or the list is bigger and inline rendering would crowd the message.

airiaMessageCheckboxes

A checkbox list plus an explicit Send button inside the menu. Users tick one or more options, then click Send. The selected message values are joined with newlines and submitted as a single user turn.
If the user ticks Pricing and Roadmap and clicks Send, the agent receives:
Attributes Body schema — identical to airiaMessageDropdown:
Checkboxes do not submit on each tick — the menu stays open while the user is choosing, and submission only happens when they click Send. Write message values that read naturally when combined with other picks via newlines.

Streaming behaviour

All four tags respect streaming. While the closing tag has not yet arrived, the trigger (or the whole inline group, for radios) renders in a disabled state so users cannot click partial suggestions. Once the tag finishes streaming, interaction enables automatically. For dropdowns, radios, and checkboxes, this means a complete, valid JSON body must be fully streamed before interaction is possible.

Prompting the model

These tags are only useful if the underlying model knows when and how to emit them. Add an example like this to your system prompt:
For an end-to-end example of weaving these into a prompt, see Prompts.