nest-keygen is a NestJS dynamic module that wraps the full Keygen REST API. All 23 resource types are supported and exposed through a single KeygenService facade, so you get one consistent injection point for licensing, machine activation, artifact distribution, and more.
pnpm add nest-keygen
# or
npm install nest-keygen
# or
yarn add nest-keygen// app.module.ts
import { Module } from '@nestjs/common';
import { KeygenModule } from 'nest-keygen';
@Module({
imports: [
KeygenModule.forRoot({
account: 'your-account-id',
token: 'your-api-token',
isGlobal: true, // make KeygenService available everywhere
}),
],
})
export class AppModule {}KeygenModule.forRoot({
account: process.env.KEYGEN_ACCOUNT!,
token: process.env.KEYGEN_TOKEN,
environment: process.env.KEYGEN_ENV,
isGlobal: true,
})import { Injectable } from '@nestjs/common';
import { KeygenService } from 'nest-keygen';
@Injectable()
export class LicensingService {
constructor(private readonly keygen: KeygenService) {}
ping() {
return this.keygen.ping();
}
issueLicense(policyId: string, userId: string) {
return this.keygen.licenses.create({ policyId, userId });
}
validateKey(key: string, fingerprint?: string) {
return this.keygen.licenses.validateKey(key, {
scope: { fingerprint },
});
}
activateMachine(licenseId: string, fingerprint: string) {
return this.keygen.machines.activate({
fingerprint,
licenseId,
platform: process.platform,
});
}
}| Option | Type | Required | Default | Description |
|---|---|---|---|---|
account |
string |
✅ | — | Account ID or slug |
token |
string |
— | — | API token (Bearer auth) |
licenseKey |
string |
— | — | License key (License auth) |
environment |
string |
— | — | Adds Keygen-Environment header |
apiVersion |
string |
— | — | Adds Keygen-Version header |
baseUrl |
string |
— | https://api.keygen.sh |
Custom API base URL |
isGlobal |
boolean |
— | false |
Register as a global NestJS module |
| Method | How to configure | Header sent |
|---|---|---|
| Token (Bearer) | set token |
Authorization: Bearer <token> |
| License key | set licenseKey |
Authorization: License <key> |
| Basic (token generate) | pass { email, password } to tokens.generate() |
handled automatically |
All resources are accessed via keygen.<resource>.<method>().
| Property | Resource | Methods |
|---|---|---|
keygen.tokens |
Tokens | generate · list · retrieve · regenerate · revoke |
keygen.environments |
Environments | create · retrieve · update · delete · list · generateToken |
keygen.products |
Products | create · retrieve · update · delete · list · generateToken |
keygen.entitlements |
Entitlements | create · retrieve · update · delete · list |
keygen.policies |
Policies | create · retrieve · update · delete · list · popPool · attachEntitlements · detachEntitlements · listEntitlements |
keygen.groups |
Groups | create · retrieve · update · delete · list |
keygen.licenses |
Licenses | create · retrieve · update · delete · list · validate · validateKey · suspend · reinstate · renew · revoke · checkOut · attachEntitlements · detachEntitlements · listEntitlements · changeOwner · changePolicy · changeGroup |
keygen.machines |
Machines | activate · retrieve · update · deactivate · list · checkOut · ping · reset · changeOwner · changeGroup |
keygen.components |
Components | add · retrieve · update · remove · list |
keygen.processes |
Processes | spawn · retrieve · update · kill · list · ping |
keygen.users |
Users | create · retrieve · update · delete · list · updatePassword · ban · unban · changeGroup |
keygen.packages |
Packages | create · retrieve · update · delete · list |
keygen.releases |
Releases | create · retrieve · update · delete · list · upgrade · publish · yank · attachConstraints · detachConstraints · listConstraints · listArtifacts · changePackage |
keygen.artifacts |
Artifacts | upload · getDownloadUrl · retrieve · update · yank · list |
keygen.platforms |
Platforms (read-only) | retrieve · list |
keygen.architectures |
Architectures (read-only) | retrieve · list |
keygen.channels |
Channels (read-only) | retrieve · list |
keygen.webhookEndpoints |
Webhook Endpoints | create · retrieve · update · delete · list |
keygen.webhookEvents |
Webhook Events | retrieve · delete · list · retry |
keygen.requestLogs |
Request Logs | retrieve · list |
keygen.eventLogs |
Event Logs | retrieve · list |
keygen.profiles |
Profiles | me |
keygen.passwords |
Passwords | forgotPassword |
All list methods accept a page parameter:
await this.keygen.licenses.list({
limit: 25,
page: { size: 25, number: 2 },
});API errors are thrown as NestJS HttpException, preserving the original Keygen status code and JSON:API error body:
import { HttpException } from '@nestjs/common';
try {
await this.keygen.licenses.retrieve('bad-id');
} catch (err) {
if (err instanceof HttpException) {
console.log(err.getStatus()); // e.g. 404
console.log(err.getResponse()); // Keygen JSON:API error object
}
}