Pushover Licensing API

For organizations purchasing Android, iOS, and Desktop licenses on behalf of their employees or customers, Pushover has a licensing API to permanently assign pre-paid license credits to Pushover user accounts.

Tip: to easily purchase and assign licenses to users when you already know their e-mail addresses ahead of time, you can use our Volume Licensing Tool.

TL;DR

  1. Purchase a number of license credits to associate them with an application's API token.
  2. Assign a license to a user by e-mail address or Pushover user account, and optionally a particular platform, by sending a POST request to https://api.pushover.net/1/licenses/assign.json with the following parameters:
    • token (required) - your application's API token
    • user (required unless email supplied) - the user's Pushover user key
    • email (required unless user supplied) - the user's e-mail address
    • os - can be left blank to assign to the first operating system the user registers with, or Android, iOS, or Desktop

Purchase License Credits

To get started with our licensing API, you will need to purchase a number of license credits by viewing (or creating) your application and clicking "Purchase License Credits". Volume discounts are available and will be displayed when purchasing larger quantities of credits in a single purchase.

Note: Once purchased, license credits are not refundable. Once a license has been assigned to a Pushover user account, it cannot be revoked or reassigned to another user.

Assign a License

Once your application has at least one license credit available, you can assign it to a Pushover user by their Pushover account e-mail address or their Pushover user key if known.

If a license is assigned to an e-mail address, it will remain pending in our systems (but deducted from your available credits) until a user signs up with that e-mail address, at which time the license will be automatically activated.

To assign a license, send a POST request to:

https://api.pushover.net/1/licenses/assign.json

Include the following parameters:

  • token (required) - your application's API token
  • user (required unless email supplied) - the user's Pushover user key
  • email (required unless user supplied) - the user's e-mail address
  • os - can be left blank, or one of Android, iOS, or Desktop

If the os parameter is left blank, the license will be assigned to the first OS/platform on which the particular user registers a device. If the user already exists and has unlicensed devices registered on multiple platforms, the first unlicensed device's platform will be licensed.

Unless you want to restrict your users to a specific platform, we recommend not supplying the os parameter to let the user register on any platform.

Also note that each API request assigns one license for one platform. If you wish to allow a user to register on multiple platforms, you will need to make one API call per user and per platform.

Response Format

If your POST request to our API was valid and the license was assigned, you will receive an HTTP 200 (OK) status, with a JSON object containing a status code of 1. You will also receive a credits parameter containing the number of credits available on your application.

{"status":1,"credits":5,"request":"4f2a071d-fc2c-4d94-9cf2-68c069a599b4"}


If assignment of the license failed for any reason (such as your application being out of available credits, or the Pushover user being invalid), you will get a status of 0 and an errors object detailing each problem.

{"status":0,
"request":"55f7df29-e2f3-4333-aeef-336334fafcee",
"errors":{"token":["is out of available license credits"]}}

Due to the nature of assigning licenses, we recommend raising any errors returned from our API and never automatically retrying until human intervention has taken place.

Check License Credits

An API call can be made to return the number of license credits remaining without assigning one, by making a GET request to:

https://api.pushover.net/1/licenses.json?token=YOUR_API_TOKEN

The response is the same format as the assign call:

{"status":1,"credits":5,"request":"142f8378-fd19-4cb7-9ea2-b18b15a07431"}