Documentation

Entitle API & SDK

Use these endpoints to mint licenses and verify access. Follow the 10-minute integration path below.

10-minute integration

  1. Authenticate with /v1/auth/login to get a Basic token.
  2. Create a product (chainId + contract + productId) via /v1/products.
  3. Mint a license with /v1/licenses/mint.
  4. Verify with /v1/verify or the SDK.

Auth

Authenticate with dashboard credentials to receive a Basic token for subsequent requests.

POST /v1/auth/login
{ "email": "dev@example.com", "password": "password123" }

Products

Define SKUs tied to chainId + contract + productId.

POST /v1/products
{
  "name": "Pro Access",
  "description": "Lifetime unlock",
  "chainId": 8453,
  "contractAddress": "0x000...",
  "productId": 1,
  "tier": "Pro",
  "rpcUrl": "https://rpc..."
}

Mint

Issue a non-transferable license to a wallet.

POST /v1/licenses/mint
{
  "wallet": "0x000000000000000000000000000000000000dEaD",
  "productId": 1,
  "tokenId": 0
}

Verify

Check if a wallet has a license for a productId.

GET /v1/verify?wallet=0x...&productId=1
Response: { "hasLicense": true }

SDK

Use the SDK to combine on-chain and API verification.

import { EntitleClient } from "@entitle/sdk";

const client = new EntitleClient({
  chainId: 8453,
  contractAddress: "0x...",
  rpcUrl: process.env.ENTITLE_RPC_URL!,
  apiBaseUrl: "https://api.entitle.dev"
});

await client.verifyWithApi("0x0000dEaD", 1);