All integrations

Pushover

MESSAGING · MESSAGING

Push notifications sent to their own devices, users, or delivery groups.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

pushover_add_user_to_groupWRITE

Add a user to a delivery group. POST /1/groups/{group_key}/add_user.json. Adds a Pushover user to the group, so messages addressed to the group key reach them too. `target_user_key` names the person being added, which in the ordinary case is SOMEBODY ELSE's user key -- this connection's own key is used only when none is given. `device` pins the membership to one of their devices; `memo` records up to 200 characters about them, such as their name or email address.

api
pushover_assign_licenseWRITE

Assign a purchased licence credit to a user. POST /1/licenses/assign.json. Spends one of the licence credits bought against this application to license a Pushover client for somebody -- named either by `target_user_key` or by `email`, and optionally restricted to one platform by `os`. Left unrestricted, the licence lands on whichever platform they first register a device on; assigned to an email address, it waits until somebody signs up with it. IRREVERSIBLE AND PAID: Pushover states that credits are not refundable and that 'Once a license has been assigned to a Pushover user account, it cannot be revoked or reassigned to another user', and every call spends exactly one credit for one platform. Pushover's own advice is to surface any error here rather than retry.

api
pushover_cancel_receiptWRITE

Stop retrying one emergency notification. POST /1/receipts/{receipt}/cancel.json. Ends the repeat delivery of one emergency-priority notification before its `expire` window runs out, so it stops sounding on the recipient's devices. What was already delivered is not withdrawn -- only the retries stop -- and cancelling cannot be undone.

api
pushover_cancel_receipts_by_tagWRITE

Stop retrying every emergency notification carrying a tag. POST /1/receipts/cancel_by_tag/{tag}.json. Ends the repeat delivery of ALL of this application's still-active emergency-priority notifications that were sent with the given tag -- possibly many messages, to many different recipients, in one call. Pushover's own example is a monitor tagging each alert `l=chicago` and clearing the lot once the outage is correlated. What was already delivered is not withdrawn, and cancelling cannot be undone.

api
pushover_check_license_creditsREAD

Check how many licence credits remain. GET /1/licenses.json. Answers the number of unassigned licence `credits` left on this application WITHOUT spending one -- the same response shape as assigning a licence. Credits are bought on pushover.net under the application, and are not refundable.

api
pushover_create_groupWRITE

Create a delivery group. POST /1/groups.json. Creates an empty delivery group on the account that owns this application token and answers its `group` key. A group key looks exactly like a user key and is used in the same place: a message addressed to it reaches every active member at once. Any application on the account or team may create one.

api
pushover_disable_user_in_groupWRITE

Temporarily disable a user in a delivery group. POST /1/groups/{group_key}/disable_user.json. Stops group messages reaching one member while keeping their membership, device pin and memo intact -- the reversible counterpart to removing them, and the right call for somebody on holiday or off shift. `target_user_key` names the member.

api
pushover_enable_user_in_groupWRITE

Re-enable a disabled user in a delivery group. POST /1/groups/{group_key}/enable_user.json. Undoes a disable: group messages reach the member again, with their existing device pin and memo. `target_user_key` names the member.

api
pushover_get_app_limitsREAD

Check this month's message quota. GET /1/apps/limits.json. Answers `limit`, `remaining` and `reset` -- the monthly message allowance (plus any purchased capacity), how many are left, and the Unix timestamp the count resets at, which is 00:00:00 US Central on the 1st. Despite the endpoint's name the quota belongs to the WHOLE user or team account rather than to one application: Pushover keeps the old wording for historical reasons. Once it is spent, every application on the account is refused with 429.

api
pushover_get_groupREAD

List one delivery group's members. GET /1/groups/{group_key}.json. Answers the group's `name` and a `users` array naming each member -- their user key, the `device` their membership is pinned to if any, the free-text `memo` recorded against them, and whether they are currently disabled.

api
pushover_get_receiptREAD

Check whether an emergency notification was acknowledged. GET /1/receipts/{receipt}.json. Answers the state of one emergency-priority (priority 2) notification: whether it was `acknowledged` and when, `acknowledged_by` and on which device, when it was `last_delivered_at`, whether it has `expired` and when it `expires_at`, and whether Pushover has `called_back` to the callback URL. The receipt id comes back from the message tool when priority is 2, and stays pollable for one week. Pushover asks for no more than one poll every 5 seconds -- or supply a `callback` URL on the message instead and be told.

api
pushover_list_groupsREAD

List this account's delivery groups. GET /1/groups.json. Answers a `groups` array giving each group's `group` key and `name`, for the account that owns this application token.

api
pushover_list_soundsREAD

List the notification sounds this application may use. GET /1/sounds.json. Answers a `sounds` hash whose keys are exactly the values the `sound` parameter accepts and whose values name each one -- Pushover's 23 built-in tones plus any custom sounds uploaded to the account that owns this application token. Pushover's own advice is to offer this list to the person choosing, along with a blank option that omits `sound` and lets their default tone play. This is also the endpoint the credential check uses when a key is pasted.

api
pushover_migrate_subscriptionWRITE

Migrate a user key to a subscription key. POST /1/subscriptions/migrate.json. Exchanges a Pushover user key an application already holds for a subscription-scoped key under the subscription named in `subscription`, and answers `subscribed_user_key` to store in its place -- the original key can then be discarded. Migrates this connection's own key unless `target_user_key` names another, and naming another is the ordinary case: this endpoint exists to move an application's existing collection of collected user keys onto subscriptions, one request per user.

api
pushover_push_messageWRITE

Send a push notification. POST /1/messages.json. Delivers a message to this connection's own Pushover account, or to the user or group key named in `target_user_key`, and answers `{status: 1, request: <id>}`. `message` is required; `title` defaults to the application's name. Priority 2 (emergency) also requires `retry` and `expire`, repeats until somebody acknowledges it, and returns a `receipt` the receipt tools can poll or cancel. Messages are limited to 1024 UTF-8 characters and a title to 250; each account may send 10,000 messages a month for free, and past that EVERY application on the account is refused with 429 until the 1st.

api
pushover_remove_user_from_groupWRITE

Remove a user from a delivery group. POST /1/groups/{group_key}/remove_user.json. Removes a member, so messages addressed to the group key stop reaching them, and discards the `memo` and device pin recorded against that membership. `target_user_key` names the person being removed. Removal is not reversible -- re-adding them creates a fresh membership with nothing carried over -- so to pause somebody temporarily, disable them instead.

api
pushover_rename_groupWRITE

Rename a delivery group. POST /1/groups/{group_key}/rename.json. Changes the group's display name. The group key does not change, so nothing that already addresses the group needs updating.

api
pushover_update_glanceWRITE

Update a widget's glance data. POST /1/glances.json. Pushes a short piece of text or a number to the recipient's Pushover widget -- an Apple Watch complication today -- WITHOUT generating a notification, a sound, or a stored message. Send at least one of `title`, `text`, `subtext`, `count` or `percent`; fields you leave out keep whatever they held before, and a field sent as an empty string is cleared. Updates this connection's own account unless `target_user_key` names another. The recipient must already have a widget registered, watchOS caps updates at about 50 a day and Pushover throttles nothing itself -- it recommends at least 20 minutes between calls -- and data can take up to 10 minutes to appear.

api
pushover_validate_userREAD

Validate a user or group key. POST /1/users/validate.json. Checks that a Pushover user or group key exists and has at least one active device, and answers with `devices` (that account's active device names) and `licenses` (the platforms it is licensed for). Checks this connection's own key unless `target_user_key` names another -- checking somebody else's is the documented purpose, as a way to confirm a person copied their key correctly before you store it. MEASURED 2026-09-16: an account that exists but has registered NO device answers 400 `user is valid but has no active devices`. The key is correct and the account is real; it simply has nothing to deliver to yet, so that response is not a credential failure and re-pasting will not change it.

api

Put Pushover behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.