Skip to content

Quickstart

A Signox integration has three main steps: prepare issuance in the dashboard → integrate the SDK → deliver the key to your end user.

  1. Create a Product. Creating a product automatically generates a signing key pair.
  2. Register Features on the product — for example, advanced_rendering (bool), max_export (int).
  3. Create a Policy — license type (perpetual/timed/trial), device limit, and the features and values to include.
  4. Issue a License from the policy. Issue one for testing purposes.

Install the SDK in your app and embed the product public key. There are three SDKs — Node.js (@signox/sdk), Java (kr.signox:signox-sdk), and C# (Signox.Sdk) — with an identical API surface and verdict codes. Node.js shown here:

import { SignoxClient } from '@signox/sdk';
const client = new SignoxClient({
productPublicKey: '…public key (SPKI PEM) from the product detail page in the dashboard…',
});
// One-time — when the end user enters a key, activate this device
await client.activate(licenseKey);
// On app start — validate (automatic fallback to local cache / offline)
const lic = await client.validate(licenseKey);
if (!lic.valid) {
// lic.code: EXPIRED / DEVICE_LIMIT_REACHED / REVOKED / NETWORK_ERROR …
showActivationScreen(lic.code);
}
// Feature gating — use the feature values granted by the policy
if (lic.features.advanced_rendering) enableAdvancedRendering();
const exportLimit = lic.features.max_export; // 10

Things to know when integrating:

  • Activation is idempotent — calling it again on the same device does not consume an extra slot.
  • Validation results are signature-verified values — the SDK does this automatically, so you can trust them as-is.
  • Once activated, it works without a network — the SDK stores the signed state locally.
  • A network failure (NETWORK_ERROR) is not an invalid verdict — handle it with retry/grace UX. The SDK distinguishes it by code.

Deliver the issued license key to the end user, for example via a purchase confirmation email. The end user then:

  • enters the key in the app to activate it, and
  • manages their own licenses and devices directly in the self-service portal (deactivating devices, issuing offline files, and so on).