Public API Documentation

ShrotiHost Licensing API

Base URL: https://license.shrotihost.in/api/public/v1

These endpoints are used by your licensed software, WHMCS modules, WordPress plugins, PHP apps, and update clients.

Overview

Public endpoints currently available in your app:

  • POST /license/activate
  • POST /license/validate
  • POST /updates/check
  • GET /download/{token}
Field Used By Required Notes
product activate, validate, updates/check Yes Must match products.slug in your licensing server.
license_key activate, validate, updates/check Yes Raw license key. Your server hashes and checks it internally.
domain activate, validate Usually Yes Used when product has domain locking enabled.
ip activate, validate Optional / required by config Used when product has IP locking enabled.
install_dir activate, validate Optional / required by config Used when product has directory locking enabled.
hwid activate, validate Optional / required by config Used when product has HWID locking enabled.
software_version activate, validate Recommended Used for activation tracking.
local_key validate Optional Accepted by the endpoint, but not currently used by the validator.
current_version updates/check Optional Compared against the latest public version to decide if an update is available.

Activate License

POST /license/activate

Required Fields: product, license_key

Optional Fields: domain, ip, install_dir, hwid, software_version

Request JSON

{
  "product": "whmcs-module-test",
  "license_key": "SHP-WHM-XXXXXXXXXXXX",
  "domain": "example.com",
  "ip": "1.1.1.1",
  "install_dir": "/home/user/app",
  "hwid": "server-01",
  "software_version": "1.0.0"
}

Success Response

{
  "valid": true,
  "status": "active",
  "support_valid": true,
  "updates_valid": true,
  "subscription_valid": true,
  "features": {},
  "limits": {},
  "local_key": "encrypted_local_key_here",
  "local_key_expires_at": "2026-03-07T10:30:00+05:30",
  "message": "License active"
}

Error Responses

{
  "valid": false,
  "status": "invalid",
  "error": "Invalid Key"
}
{
  "valid": false,
  "status": "reissue_required",
  "error": "Domain mismatch"
}
{
  "valid": false,
  "status": "reissue_required",
  "error": "IP mismatch"
}
{
  "valid": false,
  "status": "reissue_required",
  "error": "Directory mismatch"
}
{
  "valid": false,
  "status": "reissue_required",
  "error": "HWID mismatch"
}
{
  "valid": false,
  "status": "invalid_product",
  "error": "Product mismatch"
}
{
  "valid": false,
  "status": "suspended",
  "error": "License not active"
}
{
  "valid": false,
  "status": "expired",
  "error": "License not active"
}

Validate License

POST /license/validate

Required Fields: product, license_key

Optional Fields: domain, ip, install_dir, hwid, software_version, local_key

Request JSON

{
  "product": "whmcs-module-test",
  "license_key": "SHP-WHM-XXXXXXXXXXXX",
  "domain": "example.com",
  "ip": "1.1.1.1",
  "install_dir": "/home/user/app",
  "hwid": "server-01",
  "local_key": "cached-local-key-from-previous-check",
  "software_version": "1.0.0"
}

Success Response

{
  "valid": true,
  "status": "active",
  "support_valid": true,
  "updates_valid": true,
  "subscription_valid": true,
  "features": {},
  "limits": {},
  "local_key": "encrypted_local_key_here",
  "local_key_expires_at": "2026-03-07T10:30:00+05:30",
  "message": "License active"
}

Error Responses

{
  "valid": false,
  "status": "invalid",
  "error": "Invalid Key"
}
{
  "valid": false,
  "status": "reissue_required",
  "error": "Domain mismatch"
}
{
  "valid": false,
  "status": "reissue_required",
  "error": "IP mismatch"
}
{
  "valid": false,
  "status": "reissue_required",
  "error": "Directory mismatch"
}
{
  "valid": false,
  "status": "reissue_required",
  "error": "HWID mismatch"
}
{
  "valid": false,
  "status": "invalid_product",
  "error": "Product mismatch"
}
{
  "valid": false,
  "status": "suspended",
  "error": "License not active"
}
{
  "valid": false,
  "status": "expired",
  "error": "License not active"
}

Check Updates

POST /updates/check

Required Fields: product, license_key

Optional Fields: current_version

Request JSON

{
  "product": "whmcs-module-test",
  "license_key": "SHP-WHM-XXXXXXXXXXXX",
  "current_version": "1.0.0"
}

Example Success Response

{
  "eligible": true,
  "update_available": true,
  "latest_version": "1.2.0",
  "released_at": "2026-03-07T10:30:00+05:30",
  "changelog": "Bug fixes and improvements",
  "checksum_sha256": "abc123def456",
  "download_url": "https://downloads.example.com/module-1.2.0.zip"
}

Example No Update Response

{
  "eligible": true,
  "update_available": false,
  "latest_version": "1.2.0",
  "released_at": "2026-03-07T10:30:00+05:30",
  "changelog": "Bug fixes and improvements",
  "checksum_sha256": "abc123def456",
  "download_url": "https://downloads.example.com/module-1.2.0.zip"
}

Example Entitlement Response

{
  "eligible": false,
  "update_available": false,
  "reason": "Updates expired"
}

Example Error Response

{
  "error": "Invalid Key"
}
{
  "error": "Product mismatch"
}
{
  "error": "License not active",
  "status": "suspended"
}

Download Package

The update check response now returns download_url directly. Use that URL in your module or theme UI to let licensed clients download the latest file.

Try API

Paste JSON, run request, and inspect the live response from your licensing server.

Response will appear here...