Documentation

Quickstart

This walks you through minting and validating your first key. Time budget: 5 minutes.

1. Sign up

Create an account at /signup. You'll automatically get a workspace (organization) on the free plan.

2. Create an application

In the dashboard go to Applications → New application. Give it a name (e.g. Acme Studio). KeyStack will create:

  • A unique application ID.
  • An empty license-key board.
  • A default production API key (visible only on creation — copy it now).

3. Issue a license

From your backend, POST a signed request to the public API:

TS=$(date +%s)
KEY="your-api-key-secret"
BODY='{"planCode":"basic","customer":{"email":"alice@example.com"},"duration":"365d"}'
SIG=$(printf "%s.%s" "$TS" "$BODY" | openssl dgst -sha256 -hmac "$KEY" -hex | sed 's/^.* //')
 
curl https://api.keystack.dev/v1/issue \
  -H "Authorization: Bearer ak_live_..." \
  -H "X-KeyStack-Timestamp: $TS" \
  -H "X-KeyStack-Signature: $SIG" \
  -H "Content-Type: application/json" \
  -d "$BODY"

You'll get back a KS-... license key:

{
  "id": "ckxz1ab2c0000abcd",
  "key": "KS-7F3K9-9XYLM-4N2A1-Q7C9F-WT2K",
  "status": "ACTIVE",
  "expiresAt": "2027-05-15T20:00:00.000Z",
  "customer": { "id": "cus_8a3f...", "email": "alice@example.com" }
}

4. Validate it

In your product (desktop app, server, whatever the user runs):

curl https://api.keystack.dev/v1/validate \
  -H "Authorization: Bearer ak_live_..." \
  -H "X-KeyStack-Timestamp: $TS" \
  -H "X-KeyStack-Signature: $SIG" \
  -H "Content-Type: application/json" \
  -d '{"key":"KS-7F3K9-9XYLM-4N2A1-Q7C9F-WT2K","fingerprint":"machine-uuid"}'

Response:

{
  "valid": true,
  "status": "ACTIVE",
  "expiresAt": "2027-05-15T20:00:00.000Z",
  "plan": { "code": "basic", "name": "Basic", "features": {} },
  "customer": { "id": "cus_8a3f...", "email": "alice@example.com" },
  "activations": { "used": 1, "max": 1 }
}

5. Wire it up to Stripe (optional)

Drop the KeyStack webhook URL into Stripe and KeyStack will auto-issue a license every time checkout.session.completed fires. See Stripe for the full walkthrough.

That's it — you're done. Now go to the dashboard and watch your validations roll in.