Moving from Pushover
PushBell accepts Pushover’s message API as is:
- In the dashboard, API keys → Create key, tick Pushover compatible (30 characters).
- Change the URL from
https://api.pushover.net/1/messages.jsontohttps://api.pushbell.app/1/messages.json. - Use the new key as
tokenand your PushBell user key (u_…, on the Account page) asuser.
Parameters (title, message, priority, sound, url, retry, expire, callback, html, attachment…) and responses ({"status":1,"request":"…"}, an errors array on failure) are the same. Pushover sound names (cashregister, siren, persistent…) map to the closest PushBell sound.
Pushover’s other endpoints work at the same paths:
| Endpoint | What it does |
|---|---|
GET /1/receipts/{receipt}.json, POST /1/receipts/{receipt}/cancel.json, POST /1/receipts/cancel_by_tag/{tag}.json |
Emergency receipts: status, cancel, cancel by tag |
POST /1/users/validate.json |
Validates a user or group key; returns the device names (devices) and platforms (licenses) |
GET /1/sounds.json |
Built-in sounds and your custom sounds |
GET /1/apps/limits.json |
Monthly quota: limit, remaining, reset |
POST /1/glances.json |
Widget data: title, text, subtext, count, percent; an empty value clears a field |
/1/groups.json, /1/groups/{key}.json, …/add_user.json, delete_user, disable_user, enable_user, rename |
Groups |
POST /1/subscriptions/migrate.json |
Turns a user key into a subscribed key |
GET /1/teams.json, POST /1/teams/add_user.json, revoke_invitation.json, remove_user.json |
Pushover for Teams: team info, invite, revoke an invitation, remove from the team. Create the key in the dashboard with Team management ticked (admins only); this key can’t send notifications. add_user sends an email invitation and someone without an account creates one from the link without a password; password isn’t used, and the person joins the team group automatically |
Open Client API (receiving notifications)
Section titled “Open Client API (receiving notifications)”Desktop and Linux clients written for Pushover’s Open Client API, or your own software, can receive notifications from PushBell. Change the addresses:
| Pushover | PushBell |
|---|---|
https://api.pushover.net/1/… |
https://api.pushbell.app/1/… |
wss://client.pushover.net/push |
wss://ws.pushbell.app/push |
https://api.pushover.net/icons/…, /sounds/… |
https://api.pushbell.app/icons/…, /sounds/… |
- Log in:
POST /1/users/login.json(email,password). If two-factor authentication is on, the response is HTTP 412. Send the request again withtwofa(the code from your authenticator app, or a recovery code). Store thesecretfrom the response, not the password. The login shows up in your account’s Sessions list. If you end it there, the client has to log in again. - Register a device:
POST /1/devices.json(secret,name,os=O). The name is up to 25 letters, digits,_or-. A name that is taken returns an error. To reuse a device you registered earlier with this client, sendforce=1. - Listen: connect to
wss://ws.pushbell.app/pushand sendlogin:<device>:<secret>followed by a newline. The server sends single-byte frames:#keep-alive!new notifications: download them (also sent right after login, for anything that arrived while you were offline)RreconnectEpermanent error: log in again or register the device againAthe device connected from another session: don’t reconnect
- Download:
GET /1/messages.json?secret=…&device_id=…. Up to 100 notifications per call. Fields match Pushover:id,umid,title,message,app(the project),icon,date,priority,sound,url,url_title,acked,receipt,html. - Delete:
POST /1/devices/<device>/update_highest_message.json(secret,message: the highestidfrom your last download). Anything you don’t delete comes back in the next download. - Acknowledge an emergency notification:
POST /1/receipts/<receipt>/acknowledge.json(secret). Send it only when the person presses a button on the notification, not when it times out. - Log out (PushBell extension):
POST /1/users/logout.json(secret). The session ends on the server and the device is disabled, so it gets no more notifications. Deleting the local file is not enough: thesecretstays valid for a year.
- An empty
iconmeans the client asks fordefault.png(the PushBell icon). If the project or type has a logo,iconis the logo’s code:/icons/<code>.png. soundis a built-in sound name or a custom sound’s code:/sounds/<name>.mp3.- Icon and sound files are returned directly, without redirects. Files named by code never change, so you can cache them.
- End-to-end encrypted notifications don’t send their text to the client. It shows “Encrypted notification”; open the PushBell app to read it.