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
- Sign up for a free Voice Monkey account.
- 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.
- Copy the device ID shown on each device's card — you'll pass it as the
deviceparameter in HA. - Create an API token at app.voicemonkey.io/tokens and put it in your HA
secrets.yamlso 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
- In the HA UI, go to Developer Tools → Actions.
- Pick the
rest_command.vm_trigger_routineaction. - Switch to the YAML data view and enter
data: device: your-device-idusing the device ID you copied earlier. - 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
speechfield 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=valueparameters 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 /flowinstead of orchestrating each step from HA.
Sound good?
Get started on our generous free plan — no credit card required.