API integration guide for secure license verification and step update delivery
This documentation is prepared for approved developers who need to integrate the API into a software product. It explains how to verify a license, bind a domain, check for the next version update, and handle all important server responses in a practical way.
Integration overview
The API is designed for software products that need secure activation and controlled update delivery. A customer receives a license key after purchase, activates the software from a domain, and then receives updates one version at a time.
- Create the license when the customer purchases a package.
- If the domain field is empty, the first successful activation automatically locks the license to that domain.
- Future activation attempts from another domain must return a domain invalid response.
- If the license is expired, return the renewal URL instead of allowing full access.
- For updates, always send the currently installed version and receive only the next required package.
Verify license endpoint
Use this endpoint during activation, installation validation, or when protected software features require license verification.
https://reloadly.site/api/verify-license
POST
{
"software_slug": "my-test-software",
"license_key": "ABCD-EFGH-IJKL-MNOP",
"domain": "example.com"
}
{
"status": true,
"message": "License verified successfully",
"code": "LICENSE_VERIFIED",
"license_key": "ABCD-EFGH-IJKL-MNOP",
"domain": "example.com",
"is_lifetime": false,
"expires_at": "2026-12-31 23:59:59"
}
- SOFTWARE_NOT_FOUND — software slug is invalid or inactive.
- INVALID_LICENSE — license key does not belong to the software.
- DOMAIN_INVALID — domain does not match the locked domain.
- LICENSE_EXPIRED — license validity is over and renewal is required.
- LICENSE_SUSPENDED — license was blocked by the administrator.
Check update endpoint
This endpoint returns the next available update package based on the currently installed version. It does not return all pending versions together.
https://reloadly.site/api/check-update
POST
{
"software_slug": "my-test-software",
"license_key": "ABCD-EFGH-IJKL-MNOP",
"domain": "example.com",
"current_version": "1.0.0"
}
{
"status": true,
"message": "Update available",
"code": "UPDATE_AVAILABLE",
"update_available": true,
"current_version": "1.0.0",
"next_version": "1.0.1",
"version_code": 10001,
"file_name": "my-test-software-1.0.1.zip",
"download_url": "https://reloadly.site/assets/updatefile/my-test-software-1.0.1.zip",
"update_hash": "abc123hash",
"changelog": [
"Bug fixed",
"Login issue solved",
"Dashboard improved"
]
}
{
"status": true,
"message": "You are using the latest version",
"code": "NO_UPDATE",
"update_available": false,
"current_version": "1.0.3",
"next_version": null,
"version_code": null,
"file_name": null,
"download_url": null,
"update_hash": null,
"changelog": []
}
Integration examples
You can call the API from any PHP-based software using either stream context or cURL.
<?php
$payload = [
'software_slug' => 'my-test-software',
'license_key' => 'ABCD-EFGH-IJKL-MNOP',
'domain' => 'example.com',
'current_version' => '1.0.0',
];
$options = [
'http' => [
'header' => "Content-Type: application/json\r\n",
'method' => 'POST',
'content' => json_encode($payload),
'timeout' => 30,
],
];
$context = stream_context_create($options);
$response = file_get_contents('https://reloadly.site/api/check-update', false, $context);
if ($response !== false) {
$result = json_decode($response, true);
print_r($result);
}
<?php
$payload = [
'software_slug' => 'my-test-software',
'license_key' => 'ABCD-EFGH-IJKL-MNOP',
'domain' => 'example.com',
'current_version' => '1.0.0',
];
$ch = curl_init('https://reloadly.site/api/check-update');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
$response = curl_exec($ch);
curl_close($ch);
print_r(json_decode($response, true));