Skip to content

Check

Use this page to read the current signed entitlement state without mutating validation timestamps.

Who This Is For

  • developers who need a frequent entitlement read path
  • teams separating read-only checks from durable validation activity
  • AI agents implementing a lightweight runtime check loop

When To Use This

Use check when you want the current entitlement state but do not want the server to treat the call like a validating heartbeat.

If you need the normal recurring validation path, use Validation. If you are binding a device for the first time, use Activation.

How It Works

POST /api/v1/license/check:

  • uses Authorization: License <license-key>
  • accepts a runtime binding payload
  • returns a signed runtime entitlement envelope
  • does not mutate validation timestamps

This is the read-only sibling of validation. It is useful when your application wants a fresh signed entitlement answer without updating the backend’s validation activity timeline.

Example

bash
curl -X POST https://api.licensekit.dev/api/v1/license/check \
  -H "Authorization: License $LICENSE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "fingerprint": "host-123",
    "app_version": "1.4.0"
  }'

Typical response fields:

json
{
  "data": {
    "license_id": "lic_123",
    "status": "active",
    "device_id": "dev_123",
    "features": []
  },
  "signature": {
    "kid": "sig_123"
  }
}

Common Mistakes

  • assuming check updates the same validation activity as validate
  • using check to work around activation problems instead of fixing binding inputs
  • ignoring signature verification because the route feels “read only”

Prototype docs shell for the rewrite workspace.