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.

Routine Trigger API

Trigger a Voice Monkey Routine Trigger device, which in turn fires the Alexa Routine you wired it into.

GET/POST https://api-v3.voicemonkey.io/trigger

POST and GET behave identically — pick whichever your HTTP client makes easiest.

Terminal window
curl -X POST https://api-v3.voicemonkey.io/trigger \
-H "Content-Type: application/json" \
-d '{
"token": "YOUR_TOKEN",
"device": "YOUR_TRIGGER_DEVICE_ID"
}'

Or as a one-line GET, useful for IFTTT, Tasker, Flic, etc.:

Terminal window
curl "https://api-v3.voicemonkey.io/trigger?token=YOUR_TOKEN&device=YOUR_TRIGGER_DEVICE_ID"
ParameterRequiredDescription
tokenyesYour API token. See Authentication.
deviceyesThe ID of the Routine Trigger device. List your devices with GET /devices.

Successful calls return 200:

{
"success": true,
"data": "OK"
}

If any var- sidecar updates ran, the response also includes a variableUpdates array.

Any parameter prefixed with var- is upserted as a variable before the routine fires, so a downstream Flow that reads the variable sees the new value immediately:

Terminal window
curl -X POST https://api-v3.voicemonkey.io/trigger \
-H "Content-Type: application/json" \
-d '{
"token": "YOUR_TOKEN",
"device": "YOUR_TRIGGER_DEVICE_ID",
"var-CAMERA_STATUS": "motion"
}'

See Variables API → Setting variables alongside any other API call for the full rules.

Errors return a JSON body with an error field and an HTTP status code:

StatusResponse bodyMeaning
400{ "error": "MISSING_DEVICE" }No device parameter supplied.
404{ "error": "DEVICE_NOT_FOUND" }The device ID isn’t on this account.
401{ "error": "UNAUTHORIZED" }No token supplied.
401{ "error": "INVALID_TOKEN" }Token doesn’t match an active token.
429{ "error": "THROTTLED", "lockoutUntil": "<ISO>" }Per-user safety lockout — back off until the timestamp.
429{ "error": "MONTHLY_QUOTA_EXCEEDED", "periodEnd": "<ISO>" }Plan’s monthly request budget exhausted. Wait for the period end or upgrade.
500{ "error": "ALEXA_TRIGGER_FAILED" }Generic upstream Alexa failure — retry with backoff.
  • Trigger a routine from IFTTT, Zapier, Home Assistant, or any automation tool that can make an HTTP call.
  • Wire a hardware button (e.g. Flic, Shelly, ESPHome) to a routine without writing custom Alexa skill code.
  • Trigger a routine on a schedule from cron or a serverless function.

See Flic Buttons and Home Assistant for worked examples.