Take image snapshot
Use this action to save the current picture from an image entity to a file, for example to keep a copy of an image whenever it changes.
Using this action from the user interface
If you prefer building automations and scripts visually, Home Assistant walks you through this action step by step. You pick what to target, tweak a few options, and save. No YAML knowledge required.
To take an image snapshot from an automation or a script:
- Go to Settings > Automations & scenes.
- Open an existing automation or script, or select Create automation > Create new automation.
- If you’re setting up a new automation, add a trigger in the When section. Scripts don’t need a trigger. They run when something else calls them.
- In the Then do section, select Add action.
- Select what you want to control. Under By target (see Targets), select the image entity you want to capture.
- From the actions shown for that target, select Image: Take image snapshot.
- Set the Filename where the snapshot is saved.
- Select Save.
Options in the UI
Using this action in YAML
If you work directly in YAML, or you want to know exactly what Home Assistant does under the hood, this section has the technical reference. It lists the field names you use in YAML, their types, and which ones are required.
In YAML, refer to this action as image.snapshot. A basic example looks like this:
action: image.snapshot
target:
entity_id: image.front_door
data:
filename: "/config/www/snapshot.jpg"
This saves the current image from image.front_door to /config/www/snapshot.jpg.
Options in YAML
Targets of the action
This action requires a target. The target is the object of the action. You can point the action at a single entityAn entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service. [Learn more], a device, an area, a floor, or a label, and Home Assistant will run the action on every matching image entity behind that target.
-
Entity: one specific image entity, such as
image.living_room. - Device: every image entity that belongs to a device.
- Area: every image entity in a room or area.
- Floor: every image entity on a floor.
- Label: every image entity that shares a label.
You can also select different target types in one action. For example, you can add a specific entity and an area as targets in the same action to run the action on both of them at once.
Good to know
- This action only works with image entities.
- The path in
filenamemust be inside a directory that Home Assistant is allowed to write to. By default, thewwwfolder in your configuration directory and each configured media directory are allowed, so a path like/config/www/snapshot.jpgor/media/snapshot.jpgworks without extra setup. To save somewhere else, such as/tmp, add that directory toallowlist_external_dirsin thehomeassistant:section of yourconfiguration.yamlThe configuration.yaml file is the main configuration file for Home Assistant. It lists the integrations to be loaded and their specific configurations. In some cases, the configuration needs to be edited manually directly in the configuration.yaml file. Most integrations can be configured in the UI. [Learn more] file.
Try it yourself
Ready to test this? Open Developer tools > Actions, search for this action, fill in the fields, and select Perform action. You see what happens on your actual entitiesAn entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service. [Learn more] without writing a line of YAML.
More examples
Real scenarios where this action shows up in automations and scripts. Copy any example and adapt it to your setup.
You don’t need to edit YAML to use these examples. Copy a YAML snippet from this page, open the automation editor in Home Assistant, and press Ctrl+V (or Cmd+V on Mac). Home Assistant automatically converts the pasted YAML into the visual editor format, whether it’s a full automation, a single trigger, a condition, or an action.
Automation: save an image snapshot with a timestamped filename
Save a snapshot whenever the image changes and keep the date and time in the filename, so each capture is stored as a separate file.
- Trigger: The image entity changes
-
Action: Take image snapshot
- Target: Front door image
- Filename: a path that includes the current date and time
Show example YAML for saving a snapshot with a timestamp
- alias: "Save an image snapshot when it changes"
triggers:
- trigger: state
entity_id: image.front_door
actions:
- action: image.snapshot
target:
entity_id: image.front_door
data:
filename: "/config/www/front_door_{{ now().strftime('%Y%m%d-%H%M%S') }}.jpg"
Still stuck?
The Home Assistant community is quick to help: join Discord for real-time chat, post on the community forum with the action you’re calling and what you expected to happen, or share on our subreddit /r/homeassistant.
AI assistants like ChatGPT or Claude can also explain actions or suggest the right one when you describe what you want in plain language.