Comprehensive guide to authenticating user license keys, HWID hardware lock binding, and response handling.
| Parameter | Type | Description |
|---|---|---|
| key | String | User's license key code (e.g. VINTAGE-VALO-8921-X90A). |
| hwid | String | Unique hardware ID (Motherboard + Disk volume serial hash). |
| product | String | Application Name (e.g. Valorant Spoofer Pro). |
| resellerId | String | Your Reseller Account ID Secret (from Dashboard). |
| appSecret | String | Application Secret Key (from Applications Hub). |
{
"valid": true,
"message": "License key is active",
"keyCode": "VINTAGE-VALO-8921-X90A",
"productName": "Valorant Spoofer Pro",
"expiresAt": "2026-09-19T14:00:00.000Z",
"daysRemaining": 30,
"hwid": "HWID-DEVICE-DISK-SERIAL-9901"
}{
"valid": false,
"error": "HWID mismatch detected. License is bound to another device."
}// VintageAuth C++ Native SDK (Windows .EXE Loader)
#include <iostream>
#include <windows.h>
#include <cpr/cpr.h>
#include <nlohmann/json.hpp>
class VintageAuthClient {
public:
std::string appName = "Valorant Spoofer Pro";
std::string appSecret = "APP_SECRET_789123";
std::string accountSecret = "ACCOUNT_SECRET_USER_ID";
std::string apiUrl = "https://vintageauth.in/api/v1/keys/verify";
bool VerifyLicense(const std::string& key, const std::string& hwid) {
nlohmann::json payload = {
{"key", key},
{"hwid", hwid},
{"product", appName},
{"appSecret", appSecret},
{"resellerId", accountSecret}
};
cpr::Response r = cpr::Post(
cpr::Url{apiUrl},
cpr::Body{payload.dump()},
cpr::Header{{"Content-Type", "application/json"}}
);
if (r.status_code == 200) {
auto jsonResp = nlohmann::json::parse(r.text);
return jsonResp.value("valid", false);
}
return false;
}
};
int main() {
VintageAuthClient auth;
std::string userKey;
std::cout << "[*] Enter License Key: ";
std::cin >> userKey;
if (auth.VerifyLicense(userKey, "HWID-WIN32-DISK-SERIAL-9901")) {
std::cout << "[+] License Verified! Executing Protected Payload..." << std::endl;
} else {
std::cout << "[-] Invalid or Expired License Key!" << std::endl;
}
return 0;
}