API Documentation
Integrate FEFS KEYS license validation into your applications
API Base: https://spoof.fefs.dev
Key Verification
Validate license keys
HWID Binding
Device protection
Code Examples
Ready-to-use snippets
Key Verification API
POST
https://spoof.fefs.dev/api/v1/verify/{serviceHash}Validates a license key and optionally binds it to a device
Authentication Required
Include your API key in the X-API-Key header. Get your API key from the Settings tab in your service.
Headers
{
"Content-Type": "application/json",
"X-API-Key": "sk_live_yourapikey" // Required
}Request Body (HWID Enabled)
{
"key": "XXXX-XXXX-XXXX-XXXX", // Required
"hwid": "device-hardware-id" // Required when HWID is enabled
}Request Body (HWID Disabled)
{
"key": "XXXX-XXXX-XXXX-XXXX" // Key only, no HWID needed
}Success Response
{
"valid": true,
"message": "License verified successfully",
"expires_at": "2025-03-15T12:00:00Z",
"is_lifetime": false,
"hwid_bound": true
}Error Responses
// Invalid key
{ "valid": false, "message": "License has expired" }
// Missing/invalid API key (401)
{ "success": false, "message": "Invalid or missing API key" }
// Service not found (404)
{ "success": false, "message": "Service not found" }HWID Binding
Hardware ID (HWID) binding prevents license sharing by locking a key to a specific device. Enable/disable HWID per service in Settings.
HWID Enabled
- First API call binds key to device
- Same HWID required for future calls
- Users can reset via
/licenses/manage - Best for: Desktop apps, games
HWID Disabled
- No HWID field needed in requests
- Key works on any device
- Simpler integration
- Best for: Web apps, multi-device
Code Examples
Mode:
// C# License Validator - WITH HWID Binding + API Key
using System.Net.Http;
using System.Net.Http.Json;
using System.Management;
public class LicenseValidator
{
private readonly HttpClient _client;
private const string API_BASE = "https://spoof.fefs.dev";
private readonly string _serviceHash;
public LicenseValidator(string serviceHash, string apiKey)
{
_serviceHash = serviceHash;
_client = new HttpClient();
// Add API key to all requests
_client.DefaultRequestHeaders.Add("X-API-Key", apiKey);
}
public string GetHWID()
{
using var cpu = new ManagementObjectSearcher("SELECT ProcessorId FROM Win32_Processor");
using var board = new ManagementObjectSearcher("SELECT SerialNumber FROM Win32_BaseBoard");
string cpuId = "", boardId = "";
foreach (var item in cpu.Get()) cpuId = item["ProcessorId"]?.ToString() ?? "";
foreach (var item in board.Get()) boardId = item["SerialNumber"]?.ToString() ?? "";
return Convert.ToHexString(
System.Security.Cryptography.SHA256.HashData(
System.Text.Encoding.UTF8.GetBytes(cpuId + boardId)
)
)[..32];
}
public async Task<LicenseResult> ValidateAsync(string key)
{
var payload = new { key, hwid = GetHWID() };
var response = await _client.PostAsJsonAsync(
$"{API_BASE}/api/v1/verify/{_serviceHash}",
payload
);
return await response.Content.ReadFromJsonAsync<LicenseResult>()
?? new LicenseResult(false, "Failed to parse response", null, false, false);
}
}
public record LicenseResult(bool Valid, string Message, DateTime? ExpiresAt, bool IsLifetime, bool HwidBound);
// === USAGE ===
// var validator = new LicenseValidator("service_yourhash", "sk_live_yourapikey");
// var result = await validator.ValidateAsync("XXXX-XXXX-XXXX-XXXX");Quick Start
1
Create a Service
Go to Developer Dashboard and create a new service
2
Get API Key & Service Hash
Copy both from the Settings tab. Keep your API key secret!
3
Configure HWID
Enable/disable HWID binding based on your use case
4
Integrate
Use the code examples above (select HWID mode matching your settings)
5
Distribute Keys
Share: https://spoof.fefs.dev/redeem/{serviceHash}