Skip to content

Ask for the current signed licence string

POST
/api/public/license/{checkId}/fetch
curl --request POST \
--url https://app.dycrypt.com/o/acme/api/public/license/example/fetch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "license": "example", "fingerprint": "DYC1.a1b2c3d4.e5f6a7b8.00000000.c9d0e1f2.a3b4c5d6.9f2c" }'

Opt-in per product, off by default. Renewal keeps the lid and signs a new string; /check can only report that it happened. This closes that loop.

The presented licence is the credential — the current one, or an earlier, superseded term for the same lid. For a bound licence the fingerprint must match the existing binding; there is no trust-on-first-use here.

Refused once the presented licence is past its own exp plus grace. Otherwise any past licence file, including a leaked one, would pull whatever is current forever, and expiry would stop being a checkpoint.

The returned string is not trustworthy because the transport succeeded. Run it through the same verification any other licence gets.

checkId
required
string

The product’s check id. Public — it is in the URL every installed application calls.

Media typeapplication/json
object
license
required
string
fingerprint

The machine fingerprint, DYC1.<hashed parts>.<checksum>. Component values are hashed separately; raw identifiers never leave the machine.

string

The current signed licence.

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

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"
}

A missing or wrong check token.

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"
}

Fetch is not enabled for this product, the fingerprint does not match the binding, or the presented licence is past expiry plus grace.

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"
}

Online checking is disabled, or the slug is unknown.

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"
}

Rate limited. A separate budget from /check.

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"
}