Skape
Sign in

For vendors

License your product

Check licenses from your own product with ready-made packages for Node.js, TypeScript and Python, or call the HTTP API from any language. Current package version: 2.1.0.

The client side runs on the customer’s device and never holds a vendor API key. The server side runs on your backend and holds the key. Never ship the server side in anything customers receive.

Your checklist

A green check means AgentSkope has verified the step. Steps in your own product are yours to tick off when you have done them. Sign in to save your progress.

Sign in to see which steps Skape has already checked for you and to tick off your own.

Licensing Server and Integration

Everything needed to check licenses from your own product. You do not need a payout account or a published listing for this: you can issue licenses through the API for sales made elsewhere.

Set up

  1. Create your product

    Add the product that the licenses are for.

    Checked by Skape · Create a product

  2. Add a license plan

    A plan sets the features, limits and seats that a license unlocks. Plans delivered as SaaS also need verified account activation turned on.

    Checked by Skape · Open licensing plans

  3. Create a vendor API key

    An active key with the entitlements:read scope. Use a test key while you build.

    Checked by Skape · Open integrations

Build

  1. Install the package and keep the API key on your server

    Pick the package for your tech stack: client on the device, server on your backend. Never ship the key, or the server package, inside anything customers receive.

    You confirm this one · Packages and stack picker

  2. Add activation and the check on every start

    Installed app: a screen for license key, email and the emailed code, then a check on every start that works offline. SaaS: vouch for the signed-in user from your backend.

    You confirm this one

  3. Unlock features and enforce limits in your product

    The platform delivers features and limits. Your product enforces them and decides what to do when access is revoked or expired.

    You confirm this one

Test

  1. Issue a test license and activate it from your product

    AgentSkope saw an activation or check-in from a test license of this product.

    Checked by Skape · Open licenses

  2. Run the four acceptance tests

    Buy and activate a test license; check feature and seat limits; test expiry and revocation; test a disconnection or a removed seat.

    You confirm this one

Go live

  1. Switch your product to a live API key

    Replace the test key with a live key on your server when you go live.

    You confirm this one

  2. Register a webhook endpointOptional

    Get told when a license is issued, changed, revoked or about to expire. Check the signature on the raw request body.

    Checked by Skape · Open integrations

Create an API key

Your server uses a vendor API key to check licenses, issue them and read exports. It takes a minute.

  1. Sign in and open Integrations in your dashboard.
  2. Choose Create key and pick the scopes it needs.
  3. Copy the key. It is shown once, so store it in your secret manager.
  4. Use a test key while you build, and keep every key on your server only.

Open Integrations

Packages

  • npm

    @1scribe/client

    Activation with an emailed code, offline checks, refresh and unattended machines. Holds no vendor API key.

    Runs on: The customer’s device

    Install: npm install @1scribe/client

    Import: @1scribe/client

  • npm

    @1scribe/server

    Vendor API calls, vouched access for your signed-in users, and webhook and code-delivery signature checks. Holds the vendor API key.

    Runs on: Your backend

    Install: npm install @1scribe/server

    Import: @1scribe/server

  • npm

    @1scribe/core

    Types and offline verification of signed access documents. No network, no secrets.

    Runs on: Where you verify

    Install: Installed by the two packages above

    Import: @1scribe/core

  • PyPI

    1scribe

    The Python form of all three npm packages. Installed as 1scribe and imported as onescribe, because a Python module name cannot start with a digit.

    Runs on: Device (client module) or backend (server module)

    Install: pip install 1scribe

    Import: onescribe, onescribe.client, onescribe.server

npm organisation: npmjs.com/org/1scribe. Requires Node.js 18 or newer (ES modules) or Python 3.9.2 or newer.

Which package for my tech stack

Your stackWhere the check runsWhat to use
Node.js or TypeScript backend (Express, Fastify, Koa, NestJS, Hono)Your server@1scribe/server
Next.js, Remix or Nuxt with server-side codeAPI route, server action or server component on the Node runtime (not the Edge runtime)@1scribe/server
Python web backend (Django, Flask, FastAPI)Your server1scribe, module onescribe.server
Electron appMain process, never the renderer page@1scribe/client
Node-based desktop or command-line toolIn the tool@1scribe/client
Python desktop or command-line app, including a Windows EXE built with PyInstallerIn the Python layer1scribe, module onescribe.client
HTML and JavaScript front end with a Python or Node layerIn the Python or Node layer; the page only asks for the resultonescribe.client or @1scribe/client
Installed app and a backendApp: client. Backend: serverClient in the app, server on the backend
Servers, agents, CI runners and kiosks with no person at the keyboardOn the machine, with a machine token@1scribe/client or onescribe.client
Code that only checks an access document it already holdsWhere you check@1scribe/core or the top-level onescribe module

Stacks without a package

Your stackWhere the check runsWhat to use
Go, Java, Kotlin, C#, PHP, Ruby, Rust backendsYour serverCall the vendor HTTP API directly
Browser-only apps with no backend-Not supported: the API key would have to ship to the browser
React Native, Expo and native mobile appsYour backendPut the check on your backend and call it from the app
Cloudflare Workers, Vercel Edge, Deno Deploy-Not verified: the packages need Node built-ins

The HTTP API works from any language. Read the HTTP API reference.

Download the steps guide