Skip to content
Heads up — these docs cover Voice Monkey API v3, the current version. If you signed up before the v3 launch, your account is still on API v2 for a limited transition period and the examples below will not work against your account.

Variables

Variables are named, mutable values you can reference inside Speech, Web Request URLs, Conditions and any other text field that supports {VARIABLE_NAME} placeholders. Set a variable once — from the console, a Flow, an API call or a webhook — and use its current value wherever you need it.

Go to Variables (app.voicemonkey.io/variables) and use the inline form at the top of the page: type a name, type a value, click Create Variable.

Name rules:

  • Uppercase letters, numbers and underscores only, starting with a letter — e.g. FIRST_NAME, CAMERA_STATUS, UNREAD_COUNT_2.
  • Up to 64 characters.
  • WEBHOOK and WEB_RESPONSE are reserved for built-in placeholders ({WEBHOOK.<slug>.<key>} and {WEB_RESPONSE.<nodeId>.<path>}) and can’t be used as variable names.

Value rules:

  • Up to 1024 characters in the console form. The API accepts longer strings but extra-long values aren’t recommended — they tend to make announcement TTS unwieldy.
  • Anything you’d like — values are plain strings.
  • From the console — click the pencil icon next to the value, type the new value, hit save.
  • From a Flow — use a Set Variable node.
  • From an API callPUT https://api-v3.voicemonkey.io/variables with { "variable": "NAME", "value": "..." }. Or, on any other endpoint (/announce, /trigger, /flow), send a var-NAME=value parameter — the variable is upserted before the main action runs. See the Variables API.
  • From an inbound webhook — add ?var-NAME=value to the /catch URL the caller hits, or include var-NAME in the JSON body. Same var- shorthand as above.

Click Delete on the variable’s row in the console. Once deleted, any {NAME} placeholders that referenced it will resolve to an empty string until a variable with that name exists again.

A variable’s current value is substituted wherever its {NAME} placeholder appears, at the moment the surrounding action runs.

Hello {FIRST_NAME}, you have {UNREAD_COUNT} unread messages.
https://example.com/hook?name={FIRST_NAME}&status={CAMERA_STATUS}

A Condition node compares a variable against a value using a structured picker (operators: equals, not_equals, contains, not_contains, greater_than, less_than) and branches the Flow based on the result. See Flows → Control nodes.

The API’s var- shorthand JSON-stringifies objects and arrays before storing, so you can keep structured payloads in a single variable:

{ "var-PAYLOAD": { "temp": 72, "humidity": 45 } }

Stored value: {"temp":72,"humidity":45}.

Inside a Flow, reference fields with the dotted-path syntax: {PAYLOAD.temp} resolves to 72.

When an inbound webhook fires, its payload is also addressable via {WEBHOOK.<slug>.<key>} without being copied into a variable. Use whichever fits:

  • Variables are durable — they live until you delete or overwrite them.
  • Webhook payloads are stored per-webhook and overwritten each time that webhook fires; great for “latest reading”-style data without burning a variable slot.

If you want a webhook value to persist like a normal variable, send it as a var-NAME parameter on the /catch URL — that route upserts the variable on receipt.

PlanVariables
Free3
Hobby25
UltimateUnlimited

Plan limits are checked when creating a new variable. Updates to existing variables always succeed, even after a plan downgrade.