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.

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
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.

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
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"
}