licence api
give your software on Giver.EU as a limited run of licences. every licence is an edition token (Token-2022, fixed supply) and, if you want, also a classic licence key. your program can check either. no accounts, no SDK, two GET requests.
the model
a licence key is bound to the wallet that holds its edition token. the key verifies as valid only while that wallet still owns the token. when the token is exchanged or passed on, the old key stops verifying and the new owner presses claim my licence key on the item page to re-bind it. scarcity is enforced on-chain, transferability comes for free, and you never run a licence server.
1 · verify a licence key
GET https://giver.eu/api/license/{listing_id}/key/{key}
{ "valid": true, "edition_no": 3, "holder": "7fye…qEEQ", "listing_id": 42, "title": "…" }
{ "valid": false, "reason": "unknown key" | "key not redeemed yet" | "the holder no longer owns the edition token" }2 · token-gate by wallet
for web apps and tools that already let users connect a solana wallet (have them sign a message to prove it is theirs):
GET https://giver.eu/api/license/{listing_id}/wallet/{wallet}
{ "valid": true, "editions_held": 1, "mint": "…", "listing_id": 42 }examples
# shell
curl -s https://giver.eu/api/license/42/key/GIVR-7FX5X-H7NMG-3G45F-FG4KK | jq .valid
# python
import requests
ok = requests.get(f"https://giver.eu/api/license/42/key/{key}", timeout=10).json()["valid"]
// javascript
const { valid } = await (await fetch(`https://giver.eu/api/license/42/key/${key}`)).json();
tip: cache a positive answer for a few days so your software also works offline.
protocol
the full construction (HPKE envelopes, escrow state machine, security analysis) is described in the whitepaper v1.0 by Prospero, Guild of Exchange & Transport of Kyberia.