API Reference

LicenseChain Core API base URL is https://api.licensechain.app/v1. Authentication uses Authorization: Bearer <user-jwt-or-app-api-key>.

Workflow-first guide map

Products API

Products can be fully managed through the API (list, create, read, PUT/PATCH update, delete), including the same fields as the Dashboard seller products UI. Use PATCH for partial updates.

Create product request

{
  "name": "Pro Monthly",
  "description": "Recurring access to premium feature set",
  "price": 49.99,
  "currency": "USD",
  "active": true,
  "successUrl": "https://merchant.example.com/pay/success",
  "cancelUrl": "https://merchant.example.com/pay/cancel",
  "helpUrl": "https://merchant.example.com/help",
  "supportUrl": "https://merchant.example.com/support",
  "termsUrl": "https://merchant.example.com/terms",
  "privacyUrl": "https://merchant.example.com/privacy",
  "refundUrl": "https://merchant.example.com/refund",
  "productType": "subscription",
  "billingType": "recurring",
  "interval": "month",
  "stripePriceIdRecurring": "price_1AbCdEfGhIjKlMn",
  "stripeTaxEnabled": true,
  "stripeIdentityRequired": false,
  "cryptoPaymentsEnabled": true,
  "hideEmail": false,
  "autoRedirect": false
}

Product response

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "userId": "user_123",
  "name": "Pro Monthly",
  "description": "Recurring access to premium feature set",
  "price": 49.99,
  "currency": "USD",
  "active": true,
  "successUrl": "https://merchant.example.com/pay/success",
  "cancelUrl": "https://merchant.example.com/pay/cancel",
  "helpUrl": "https://merchant.example.com/help",
  "supportUrl": "https://merchant.example.com/support",
  "termsUrl": "https://merchant.example.com/terms",
  "privacyUrl": "https://merchant.example.com/privacy",
  "refundUrl": "https://merchant.example.com/refund",
  "productType": "subscription",
  "billingType": "recurring",
  "interval": "month",
  "stripePriceIdRecurring": "price_1AbCdEfGhIjKlMn",
  "stripeTaxEnabled": true,
  "stripeIdentityRequired": false,
  "cryptoPaymentsEnabled": true,
  "hideEmail": false,
  "autoRedirect": false,
  "licenseEmails": [
    "licenses-a@merchant.example.com",
    "licenses-b@merchant.example.com"
  ],
  "sendLicenseToCustomer": true,
  "callbackSecret": "base64url_or_base64_secret_from_product_record",
  "createdAt": "2026-05-11T07:00:00.000Z",
  "updatedAt": "2026-05-11T07:00:00.000Z"
}

Transaction status API

Use POST /transaction/status for one transaction and POST /transactions for batched details.

Status request

{
  "transaction": "pi_3RxExample123"
}

Status response

{
  "status": 200,
  "transactionStatus": "paid",
  "transactionStatusReason": "Transaction successfully completed",
  "info": "",
  "transaction": {
    "transactionId": "pi_3RxExample123",
    "transactionStatus": "paid",
    "statusReason": "Transaction successfully completed",
    "licenseId": "lic_abc123",
    "productId": "prod_8c9a1d74",
    "amount": 49.99,
    "currency": "USD",
    "email": "buyer@example.com",
    "timestamp": "2026-05-11T07:01:00.000Z",
    "paymentProvider": "stripe"
  }
}

License verify and JWT

Verify request

{
  "key": "LC-XXXXXX-XXXXXX-XXXXXX",
  "hwuid": "optional-device-id"
}

Verify response (with optional license token)

{
  "valid": true,
  "status": "ACTIVE",
  "expiresAt": "2025-12-31T23:59:59Z",
  "email": "user@example.com",
  "verificationType": "custom",
  "license_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImxpY2Vuc2VjaGFpbi0xIn0....signature",
  "license_token_expires_at": "2024-01-01T01:00:00.000Z",
  "license_jwks_uri": "https://api.licensechain.app/v1/licenses/jwks"
}
Open detailed endpoint index