Reseller API
Programmatically manage your licenses with our REST API.
Base URL
# Your API base URL:
__BASE_URL__/reseller
# Example full endpoint:
__BASE_URL__/reseller/myavailable
Generate your API key in the Reseller Dashboard under Settings.
Authentication
All API requests require your API key passed in the request body:
{
"api_token": "YOUR_API_KEY",
// ... other parameters
}
Keep your API key secret. It provides full access to your reseller account.
GET /myavailable
Returns all available licenses that are not yet resold.
JavaScript
Python
const BASE_URL = "__BASE_URL__/reseller";
fetch(BASE_URL + "/myavailable?api_token=YOUR_API_KEY")
.then(res => res.json())
.then(console.log);
import requests
BASE_URL = "__BASE_URL__/reseller"
response = requests.get(
BASE_URL + "/myavailable",
params={"api_token": "YOUR_API_KEY"}
)
print(response.json())
Response
{
"ok": true,
"licenses": [
{
"key": "ps-XXXX-XXXXXXX-XXX",
"product": "lifetime",
"expiration": 1767225600000,
"created_at": 1735689600000
}
]
}
GET /licenseinfo
Get information about a specific license.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| api_token | string | Your API key |
| license | string | The license key |
JavaScript
Python
const BASE_URL = "__BASE_URL__/reseller";
fetch(BASE_URL + "/licenseinfo?api_token=YOUR_API_KEY&license=ps-XXXX-XXXXXXX-XXX")
.then(res => res.json())
.then(console.log);
import requests
BASE_URL = "__BASE_URL__/reseller"
response = requests.get(
BASE_URL + "/licenseinfo",
params={
"api_token": "YOUR_API_KEY",
"license": "ps-XXXX-XXXXXXX-XXX"
}
)
print(response.json())
Response
{
"ok": true,
"info": {
"key": "ps-XXXX-XXXXXXX-XXX",
"product": "lifetime",
"expiration": 1767225600000,
"is_expired": false,
"is_assigned": false,
"created_at": 1735689600000
}
}
GET /fetchlicense
Get a random available license from your stock.
JavaScript
Python
const BASE_URL = "__BASE_URL__/reseller";
fetch(BASE_URL + "/fetchlicense?api_token=YOUR_API_KEY")
.then(res => res.json())
.then(console.log);
import requests
BASE_URL = "__BASE_URL__/reseller"
response = requests.get(
BASE_URL + "/fetchlicense",
params={"api_token": "YOUR_API_KEY"}
)
print(response.json())
Response
{
"ok": true,
"license": {
"key": "ps-XXXX-XXXXXXX-XXX",
"expiration": 1767225600000
}
}
POST /assignlicense
Assign a license to a Discord user.
Request Body
| Parameter | Type | Description |
|---|---|---|
| api_token | string | Your API key |
| license | string | The license key to assign |
| discord_user_id | string | Discord user ID to assign to |
JavaScript
Python
const BASE_URL = "__BASE_URL__/reseller";
fetch(BASE_URL + "/assignlicense", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
api_token: "YOUR_API_KEY",
license: "ps-XXXX-XXXXXXX-XXX",
discord_user_id: "123456789012345678"
})
})
.then(res => res.json())
.then(console.log);
import requests
BASE_URL = "__BASE_URL__/reseller"
response = requests.post(
BASE_URL + "/assignlicense",
json={
"api_token": "YOUR_API_KEY",
"license": "ps-XXXX-XXXXXXX-XXX",
"discord_user_id": "123456789012345678"
}
)
print(response.json())
Response
{
"ok": true,
"message": "License assigned successfully"
}
Rate Limiting
API requests are limited to 100 requests per minute per API key. If you exceed this limit, you'll receive:
{
"ok": false,
"message": "Rate limit exceeded. Try again later."
}
Error Responses
All errors follow this format:
{
"ok": false,
"message": "Error description here"
}