Skip to content

Pushover

URL Format

pushover://shoutrrr:API_TOKEN@USER_KEY/[?devices=DEVICE_1[,DEVICE_2,...]]

URL Fields

  • Token - API Token/Key (Required)
    URL part: Password
  • User - User Key (Required)
    URL part: Host

Query/Param Props

Props can be either supplied using the params argument or through the URL using ?key=value&key=value etc.

  • devices - The devices to send to, or empty for all of the user's devices Default: empty

  • encryptionkey - 256-bit AES key as 64 hex characters for end-to-end encryption Default: empty Aliases: key

  • expire - How long an emergency notification repeats, at most 3h (default 1h) Default: empty

  • priority - Message priority from -2 (lowest) to 2 (emergency) Default: 0

  • retry - Time between repeats of an emergency notification, at least 30s (default 15m) Default: empty

  • timestamp - Unix time in seconds to show instead of when Pushover received the message Default: 0

  • title - Notification title, optionally set by the sender Default: empty

Getting the keys from Pushover

At your Pushover dashboard you can view your USER_KEY in the top right. Screenshot 1

The Name column of the device list is what is used to refer to your devices (DEVICE_1 etc.) Screenshot 4

At the bottom of the same page there are links your applications, where you can find your API_TOKEN Screenshot 2

The API_TOKEN is displayed at the top of the application page. Screenshot 3

Optional parameters

You can optionally specify the title and priority parameters in the URL:

pushover://shoutrrr:API_TOKEN@USER_KEY/?devices=DEVICE&title=Custom+Title&priority=1

The priority is a number from -2 (lowest) to 2 (emergency), and other values are rejected.

Emergency priority

Priority 2 sends an emergency notification, which Pushover repeats until the user acknowledges it. The retry param sets the time between repeats and the expire param sets how long they continue. Both are durations in whole seconds, such as 30s, 15m, or 1h. retry must be at least 30s and defaults to 15m. expire must be at most 3h and defaults to 1h. Pushover stops after 50 repeats, whatever expire says. They are sent only with emergency priority.

Emergency notification that repeats every minute for half an hour

pushover://shoutrrr:API_TOKEN@USER_KEY/?priority=2&retry=1m&expire=30m

Message time

Pushover shows and orders messages by the time its servers received them, so messages sent close together can appear out of order. The timestamp param sets the time to show instead, as a Unix time in seconds, such as the time the event happened. It is usually set for each send, as in params["timestamp"] = strconv.FormatInt(time.Now().Unix(), 10), but the URL can also set it.

The timestamp must not be negative, and 0 leaves the time to Pushover. End-to-end encryption does not cover it, so it is always sent as is.

Message level

A sender can set a message level with the level param, as Params.SetLevel does. When neither the URL nor the send params set priority, the level picks the priority:

Level Priority
Debug -1 (low)
Info 0 (normal)
Warning 0 (normal)
Error 1 (high)

High priority bypasses quiet hours, so only errors use it. A priority in the URL or the send params takes precedence over the level, even when it is set to the default.

End-to-end encryption

Pushover end-to-end encryption encrypts message and title on the client before they are sent. Generate a 256-bit key and configure the same value in the Pushover iOS or Android app:

openssl rand -hex 32

Then include it in the service URL:

pushover://shoutrrr:API_TOKEN@USER_KEY/?encryptionkey=ENCRYPTION_KEY

Replace ENCRYPTION_KEY with the 64 hexadecimal characters that the command prints.

key is accepted as an alias for encryptionkey. A valid key enables encryption automatically. An invalid key fails during URL verification, and encryption errors refuse to send rather than falling back to plaintext.

Encrypted fields are larger than the original text and still count toward Pushover's 1024-character field limit. Desktop clients cannot decrypt end-to-end encrypted messages.

Please refer to the Pushover API documentation for more information.