Quick Start
The Apprise Object
Section titled “The Apprise Object”import appriseapobj = apprise.Apprise()Adding Services (add)
Section titled “Adding Services (add)”The add() method registers notification services to your instance.
# Add a single serviceapobj.add('json://localhost')
# Add multiple services at onceapobj.add([ 'mailto://user:pass@example.com', 'slack://tokenA/tokenB/tokenC'])Sending Notifications (notify)
Section titled “Sending Notifications (notify)”The notify() method sends messages to all registered services.
apobj.notify( title="Server Alert", body="CPU usage is at 99%",)Message Types
Section titled “Message Types”You can categorize your notifications using NotifyType. This often changes the icon or color of the notification (depending on the receiving service).
from apprise import NotifyType
apobj.notify( title="Success", body="Backup completed successfully.", notify_type=NotifyType.SUCCESS)| Icon | Type | Description |
|---|---|---|
![]() | NotifyType.INFO | Default. General information. |
![]() | NotifyType.SUCCESS | Successful operations. |
![]() | NotifyType.WARNING | Issues that aren’t fatal. |
![]() | NotifyType.FAILURE | Critical errors. |
Tagging
Section titled “Tagging”Tagging allows you to send notifications to specific subgroups of services.
1. Assign Tags
# Assign tags when adding servicesapobj.add('slack://...', tag='devops')apobj.add('mailto://...', tag='management')apobj.add('discord://...', tag=['devops', 'management']) # Multiple tags2. Filter by Tags
# Notify ONLY services tagged 'devops'apobj.notify(title="Deploying", body="...", tag="devops")
# Notify services tagged 'devops' OR 'management'apobj.notify(title="Update", body="...", tag=["devops", "management"])Programmatic tag expressions follow:
notify(tag=...) expression | Selected services |
|---|---|
"TagA" | Has TagA |
"TagA,TagB" | Has TagA AND TagB |
["TagA", "TagB"] | Has TagA OR TagB |
["TagA,TagC", "TagB"] | Has (TagA AND TagC) OR TagB |
# Notify services tagged 'product' AND 'create'apobj.notify(title="Created", body="...", tag="product,create")
# Notify services tagged 'devops' OR 'finance'apobj.notify(title="Report", body="...", tag=["devops", "finance"])
# Notify services matching ('comment' AND 'create') OR 'admin'apobj.notify(title="Comment Created", body="...", tag=["comment,create", "admin"])Priority Filtering
Section titled “Priority Filtering”Tags in configuration files may carry a numeric priority prefix (for example 1:alerts or 5:alerts in YAML). There are two modes depending on whether you include a priority in the filter.
Without a priority prefix — escalation (default)
Services are grouped by their tag priority and dispatched in ascending order. If every service in the lowest-numbered group succeeds, Apprise returns True immediately without running higher-numbered groups. If any fail, Apprise escalates to the next group.
# All 'alerts' services dispatched in ascending priority order.# Priority-1 entries run first; if they all succeed, priority-5 entries# are never triggered.apobj.notify(body="...", tag="alerts")With a priority prefix — exclusive filter
Only services whose matching tag has exactly that priority are notified. No escalation occurs.
# Notify ONLY 'alerts' entries assigned priority 2apobj.notify(body="...", tag="2:alerts")Per-Call Retry Override
Section titled “Per-Call Retry Override”A trailing :N on a tag value overrides each matched service’s configured retry count for this one call only:
# Notify all 'alerts' services, retrying each up to 3 times on failureapobj.notify(body="...", tag="alerts:3")
# Notify only priority-2 'alerts' services with up to 3 retriesapobj.notify(body="...", tag="2:alerts:3")The retry count does not permanently modify the service configuration.
Loading Configuration Files
Section titled “Loading Configuration Files”You can use the AppriseConfig object to load URLs from external YAML or Text files instead of hardcoding them.
import apprise
# 1. Create the Config Objectconfig = apprise.AppriseConfig()
# 2. Add configuration sourcesconfig.add('/path/to/my/config.yml')config.add('https://myserver.com/my/apprise/config')
# 3. Create Apprise instance and ingest the configapobj = apprise.Apprise()apobj.add(config)
# 4. Notify as usual (URLs from the file are now loaded)apobj.notify("Loaded from config!") Questions or Feedback?
Documentation
Notice a typo or an error? Report it or contribute a fix .
Technical Issues
Having trouble with the code? Open an issue on GitHub:



