Licensing Policies
Control what types of licenses each product offers using Keygen's powerful license policies. From node-locked licenses to timed trials, we have your licensing needs covered.
# Create a new license for a user of the “ecorp” account
curl https://api.keygen.sh/v1/accounts/ecorp/licenses -X POST \
-H 'Authorization: Bearer a9f93c31b41642248db99fc04f4e8482.ebbe297ffbed4ccc837733e335bd8181…' \
-H 'Content-Type: application/vnd.api+json' \
-H 'Accept: application/vnd.api+json' \
-d '{
"data": {
"type": "licenses",
"attributes": {
"key": "B8A5-91D7-CB9A-DAE4-4F6E-1128"
},
"relationships": {
"policy": {
"data: { "type": "policies", "id": "fbc29532…" }
},
"user": {
"data: { "type": "users", "id": "592032dd…" }
}
}
}
}'Control what types of licenses each product offers using Keygen's powerful license policies. From node-locked licenses to timed trials, we have your licensing needs covered.
Utilize Keygen's identity management features to support multiple licenses per-user, and allow users to perform self-management actions for their licenses and machines.
Enforce where your products can and cannot be used by managing each license's machine activations. Our policies enforce everything from node-locked to floating licenses.
…and what isn't. With Keygen's Dashboard, you can always be on top of what's happening with your products.

Quickly implement Keygen in the programming language of your choice.
easily implement Keygen to handle licensing for your product
quickly set up user registration and license validation
provide licensed product distribution and auto-updates
a full API reference with examples in popular languages
awesome in-app and email support
Keygen is a cloud-based LaaS (licensing as a service) that provides secure license and entitlement management services, as well as user and identity management for desktop apps and other types of software. Keygen's primary product is a set of APIs that enable developers to quickly license and distribute their software products.
Keygen aims to make licensing software for small- to medium-businesses easy by letting you ship your product earlier and not waste time building custom licensing servers and managing infrastructure.
Yes! One of the things that makes Keygen unique is that we encourage you to allow your users to manage their own resources i.e. their licenses and machines, while you respond to the appropriate webhook events to handle billing using your payment provider. This not only gives your users freedom to purchase additional licenses directly from within your product without your help (offering a great user-experience and potential for more sales!) but can also lower your licensing-related support costs.
Keygen supports almost any licensing model: perpetual licenses, subscription-based models, concurrency models, single machine-locked licenses, floating licenses with and without machine limits, feature-based licenses, limited pre-determined pool-based licenses, licenses that require periodic check-in, and even a combination of most of those.
Yes! Keygen offers API endpoints to help you track user machine usage,
and license policies can be configured to strict, invalidating licenses
that go over any configured machine limit. You can also set license
policies to floating to allow licenses to be valid across multiple
machines.
No. Keygen does nothing to prevent a user from removing your licensing logic altogether if they have access to your application's code. In the end, you will have to make the choice on how to deal with cracking by e.g. requiring a valid license for updates, requiring a licensed user-account for support requests, etc.
We strive to provide the highest uptime possible for our customers through a distributed system hosted on battle-tested insfrastructure. You can monitor uptime and average response time for each of Keygen's services from our status page.
Yes. We strive to ensure that the data stored within Keygen is as secure as
possible. We never store passwords as plain text—they are always hashed and
salted securely using bcrypt. We also do the same with all access tokens.
We use 256-bit encryption at all levels of our software. All connections to
our APIs are encrypted over SSL (i.e. we encrypt "in transit"), our databases
are encrypted (i.e. we encrypt "at rest"), and all of our data backups are
encrypted. Have additional questions or concerns? Get in touch.
Yes, we support several methods of cryptographically signing or encrypting license keys, which can be verified in offline environments. For more information, check out our API reference.
Yes! Using Keygen Dist, you can distribute your products to licensed users and even provide auto-updates using industry standard frameworks such as Sparkle, NSIS, Squirrel.Mac, Squirrel.Windows, and even updates for WordPress plugins and themes.
No—only licensing. Since products handle payments in a variety of ways (and we don't want to become a payment platform), we have created a webhook system so that you can easily integrate your payment system with our API. Implementation is similar to how you would implement Stripe's webhook system. Learn more about webhooks.
Yes and no. Unfortunately, it isn't possible at this time to use Keygen for in-app license purchases. Apple’s developer terms require that in-app purchases, such as premium content and add-ons are done through their native In-App Purchase API. But it is possible to use Keygen as a secondary licensing system, as long as it is not advertised in-app (i.e. purchases will need to be done via a web site, outside of the app).
Yes and no. If you're selling outside of the Google Play Store, then yes, you can use Keygen to handle licensing. But if you're selling within the Google Play Store, then unfortunately it isn't possible at this time to use Keygen for in-app license purchases. Google's developer policy requires that in-app purchases, such as premium features and add-ons are managed via their native In-App Billing API. But it is possible to use Keygen as a secondary licensing system, as long as it is not advertised in-app (i.e. purchases will need to be done via a web site, outside of the app).