Skip to content

Check a licence string the way a customer's application would

POST
/api/licenses/verify
curl --request POST \
--url https://app.dycrypt.com/o/acme/api/licenses/verify \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "license": "example" }'

A diagnostic. It verifies the signature and reports the verdict; it does not perform an online check and does not bind anything.

Alongside the verdict (valid, reason, claims, product, signature, signatureAlgorithm, expiry) the response carries a ledger block saying whether this organisation has a record of the licence id: { known: false }, or known: true with lid, licensee, customerId, status, revoked and archived.

It is context, never an input to the verdict. A licence with no record here, or one that has been archived, verifies on exactly the same terms as any other — anything else would put the console at odds with every SDK in the field.

Media typeapplication/json
object
license
required
string
Examplegenerated
{
"license": "example"
}

The verdict, its claims, and why if it failed.

Media typeapplication/json
object
Examplegenerated
{}

The request is wrong — a bad date, a missing field, a value the product does not declare.

Media typeapplication/json

Every failure in this API has this shape and no other.

object
error
required
string
Example
{
"error": "this token does not have licenses:write"
}

No credential, or one that no longer resolves — revoked, expired, deleted. Replace it.

Media typeapplication/json

Every failure in this API has this shape and no other.

object
error
required
string
Example
{
"error": "this token does not have licenses:write"
}

Authenticated, but not allowed: a missing scope, a read-only role, a plan limit reached, or a credential used under another organisation’s slug. The right credential doing something it may not do.

Media typeapplication/json

Every failure in this API has this shape and no other.

object
error
required
string
Example
{
"error": "this token does not have licenses:write"
}