Voice Monkey

Connect Home Assistant to Alexa

Trigger Alexa Routines and make text-to-speech announcements from Home Assistant.

Home Assistant is open-source home automation software. With Voice Monkey you can trigger Alexa Routines from any HA automation, and have your Echo devices speak any text you like — without needing the Alexa Media Player integration or any cloud-link tricks.

The easy way: copy YAML from the Playground

Voice Monkey's API Playground generates ready-to-paste Home Assistant YAML for whichever request you're building. Compose your call (token, device, announcement text), pick the Home Assistant snippet tab, and copy the result straight into your configuration.yaml. Skip the rest of this page if you're in a hurry.

What is Voice Monkey?

Voice Monkey is an Alexa skill plus a small HTTP API. It lets you trigger Alexa Routines remotely and make dynamic text-to-speech announcements on any Echo. It works with Home Assistant, IFTTT, Node-RED, custom scripts — anything that can make an HTTP request. See Devices for how it appears in your Alexa account.

Step 1 — set up Voice Monkey

  1. Sign up for a free Voice Monkey account.
  2. Create a Routine Trigger device (to fire an Alexa Routine) or a Speaker device (to make TTS announcements). The Add a device guide walks through wiring it up in the Alexa app.
  3. Copy the device ID shown on each device's card — you'll pass it as the device parameter in HA.
  4. Create an API token at app.voicemonkey.io/tokens and put it in your HA secrets.yaml so it doesn't land in version control.

Step 2 — trigger an Alexa Routine

Add a rest_command to configuration.yaml:

# Voice Monkey - trigger an Alexa Routine
rest_command:
  vm_trigger_routine:
    url: https://api-v3.voicemonkey.io/trigger
    method: POST
    content_type: 'application/json; charset=utf-8'
    payload: '{"token":"!secret voice_monkey_token","device":"{{ device }}"}'

Restart Home Assistant (or reload YAML Configuration from Developer Tools).

Test it

  1. In the HA UI, go to Developer Tools → Actions.
  2. Pick the rest_command.vm_trigger_routine action.
  3. Switch to the YAML data view and enter data: device: your-device-id using the device ID you copied earlier.
  4. Press Perform action.

Your Alexa Routine should fire within a second or two. From here, call this action from any HA automation, script, button card or voice command.

Step 3 — make Alexa speak

For text-to-speech announcements, add a second rest_command targeting the /announce endpoint:

# Voice Monkey - speak on an Echo
rest_command:
  vm_announce:
    url: https://api-v3.voicemonkey.io/announce
    method: POST
    content_type: 'application/json; charset=utf-8'
    payload: '{"token":"!secret voice_monkey_token","device":"{{ device }}","speech":"{{ speech }}"}'

Then call it with both a device (a Voice Monkey Speaker device) and speech (the text you want Alexa to say):

data:
  device: kitchen-echo-3f7k2
  speech: Dinner is ready!

The /announce endpoint also accepts media URLs, voice overrides, on-screen text and more. See the full Announcement API reference.

Worked example: motion-detector announcement

Here's a complete HA automation that announces motion detected by a sensor on your kitchen Echo:

automation:
  - alias: 'Front-door motion → kitchen Echo'
    trigger:
      - platform: state
        entity_id: binary_sensor.front_door_motion
        to: 'on'
    action:
      - action: rest_command.vm_announce
        data:
          device: kitchen-echo-3f7k2
          speech: 'Heads up — there is movement at the front door.'

Tips

  • Reference HA template variables inside the speech field for dynamic announcements (e.g. sensor values, the current time, who just arrived).
  • Use Voice Monkey variables if you need to share state across HA, the API and your Flows. Append var-NAME=value parameters on any call to upsert them in the same request.
  • Need richer logic — branching, questions, multi-device sequences, web requests? Build a Flow and have HA trigger it via POST /flow instead of orchestrating each step from HA.

Sound good?

Get started on our generous free plan — no credit card required.