Buni.aiDocs

Cheat sheet

Quick reference for the canvas - template syntax, router operators, handles, keyboard shortcuts and a pre-publish checklist.

A one-page reference for building on the canvas. Each section links to the full explanation.

Templates

WriteMeans
{{state.name}}A value in state
{{state.order.id}}A nested field
{{input}}The previous node's result
${state.name}Older syntax, still accepted
${CREDENTIALS.NAME}A workspace credential
{state.tier}A variable as a Router condition value

Type {{ in a field to open the variable picker. More in Variables and templating.

Router operators

OperatorMeaning
is / is notStrict equality: 5 and "5" differ
is (loose ==) / is not (loose !=)Equality that converts types
greater than, greater or equal, less than, less or equalNumeric comparisons
contains / not containsText or list contains the value
starts with / ends withText begins or ends with the value

Conditions are checked top to bottom and the first match wins. Put default last. See Router.

Output handles

NodeHandles
Routerone per condition, default
API, Integrationsuccess, failure (while Failure path is on)
Filtertrue, false (followed in voice projects only)
Formsubmit, cancel, failure
Collect Paymentpaid, failed
Approvalapproved, rejected
Loopeach item, done
Parallelbranch 1 … branch N, done

More in Connections.

Function node

(input) => {
  // input is the previous node's result; state holds the session's variables
  const amount = Number(input);
  if (Number.isNaN(amount) || amount <= 0) {
    return { valid: false };
  }
  return { valid: true, amount };
}

Save the result with Output variable, then branch on it in a Router, for example state.check.valid is true. See Function.

Keyboard shortcuts

ActionMacWindows
Search nodes on the canvas⌘FCtrl + F
Undo / redo⌘Z / ⇧⌘ZCtrl + Z / Ctrl + Shift + Z
Edit selected node⌘ECtrl + E
Duplicate node⌘DCtrl + D
Delete selectedDelete / BackspaceDelete / Backspace
Group selected nodes into a frame⌘GCtrl + G
Add sticky noteShift + NShift + N
Toggle comment modeCC
Open cursor chat//
Area selectShift + dragShift + drag
Multi-select⌘ + clickCtrl + click
Command palette⌘KCtrl + K
All shortcuts??

Before you publish

  • Every node is connected, and nothing is left unreachable.
  • Every Router has a default, placed last.
  • Every failure handle on API and Integration nodes goes somewhere.
  • Invalid input leads to a helpful message and a way to try again.
  • Output variable names are descriptive and spelled the same everywhere they are read.
  • Secrets are stored as credentials, not typed into fields.
  • Every branch has been walked in the simulator.

Then publish.

Last reviewed 24 September 2026

On this page