API Documentation & Integration Manual
Automate wallet balance checks, live product catalog synchronization, player nickname checks, Double Diamond promotion validation, and high-speed diamond order fulfillment programmatically.
API execution endpoints (such as programmatic balance requests and automated order creation) require an active VIP plan (Best, Pro, or Extreme). Public price catalog checks and storefront browsing remain free.
System Architecture & Overview
Version 5.0The Kendy Gaming Reseller API provides external platforms, e-commerce storefronts, and automated bots with low-latency RESTful access to verify gaming player usernames, check real-time wallet balances, fetch discounted reseller pricing, validate Double Diamond bonus eligibility, and fulfill game recharge orders in sub-second speed.
Query wallet balance before processing incoming requests.
Sync active catalog packages and specific reseller prices.
Validate in-game player nickname to prevent failed top-ups.
Check player Double Diamond tier eligibility.
Submit order payload for instant automated delivery.
Instant Publisher Execution
Direct connection to Moonton publisher gateways ensures sub-second diamond delivery.
Key-Pair Authentication
Cryptographic public/private key verification ensures wallet balances are only debited by authorized systems.
Authentication & Credentials
Secure HMAC
Authentication is performed using your unique API Key pair. Pass both public_key
and private_key
in your JSON request body or URL parameters.
| Field | Type | Required | Description |
|---|---|---|---|
| public_key | String | Yes | Your Reseller Public Key ID (identifies your reseller account). |
| private_key | String | Yes | Your Reseller Private Secret Signature (verifies wallet debit permission). |
Crucial Security Requirement
Never expose your private_key in client-side code, mobile applications, or public repositories. If your key is ever compromised, regenerate it immediately from your User Dashboard.
Base API Endpoint
HTTPS Production
All API requests must be transmitted securely over HTTPS. Standard request payload format is JSON
(Content-Type: application/json).
API Endpoints Reference
Complete technical specs for all 5 reseller functions.
1. Fetch Wallet Balance
Retrieves your live reseller wallet balance, account creation date, and status. Call this endpoint before submitting order batches to ensure sufficient credit is available.
| Field | Type | Required | Description |
|---|---|---|---|
| public_key | String | Yes | Your Reseller Public Key ID. |
| private_key | String | Yes | Your Reseller Private Secret Signature. |
{
"public_key": "knd_pub_8a92f01c",
"private_key": "knd_sec_99b34a17ef"
}
{
"success": true,
"balance": 5420.50,
"created_at": "2026-01-15T10:30:00"
}
2. Fetch Products List
Fetches all currently active recharge products, packages, categories, and custom reseller rates.
If your account is an authorized reseller, the returned price automatically reflects your discounted tier
rate.
| Field | Type | Required | Description |
|---|---|---|---|
| public_key | String | Yes | Your Reseller Public Key ID. |
| private_key | String | Yes | Your Reseller Private Secret Signature. |
Integration Note: Use the returned id integer (e.g. 1, 5) as
the product_id value
when calling the Create Order endpoint.
{
"public_key": "knd_pub_8a92f01c",
"private_key": "knd_sec_99b34a17ef"
}
{
"success": true,
"total_products": 24,
"is_reseller": true,
"products": [
{
"id": 1,
"product_name": "MLBB 86 Diamonds",
"category": "Mobile Legends",
"price": 125.00,
"status": "active"
},
{
"id": 2,
"product_name": "Weekly Diamond Pass",
"category": "Mobile Legends",
"price": 160.00,
"status": "active"
}
]
}
3. Check Player Username
Verifies game player credentials and returns the registered in-game nickname (e.g. Mobile Legends player name) directly from publisher servers before placing top-ups. This prevents failed orders and ensures 100% correct delivery.
| Field | Type | Required | Description |
|---|---|---|---|
| userid | String / Int | Yes | In-game player User ID (e.g.
12345678). Also accepts user_id or USERID. |
| zoneid | String / Int | Yes | In-game Zone / Server ID (e.g.
1234). Also accepts zone_id, ZONEID, or server_id. |
{
"userid": "12345678",
"zoneid": "1234"
}
GET query alternative: /api/check-username?userid=12345678&zoneid=1234
{
"success": true,
"ok": true,
"username": "KendyResellerPro",
"userid": "12345678",
"zoneid": "1234"
}
4. Check Double Diamond Availability (MLBB)
Verifies whether a Mobile Legends: Bang Bang player account is eligible for the promotional
Double Diamond (2x) packages (50+50, 150+150, 250+250, 500+500). Returns individual tier status, player
nickname, and regional eligibility.
| Field | Type | Required | Description |
|---|---|---|---|
| userid | String / Int | Yes | Mobile Legends Player User ID
(e.g. 12345678). |
| zoneid | String / Int | Yes | Mobile Legends Server / Zone ID
(e.g. 1234). |
| country | String | Optional | Region code for promo server
check. Defaults to "BR". |
{
"userid": "12345678",
"zoneid": "1234"
}
GET query alternative: /api/check-double-diamond?userid=12345678&zoneid=1234
{
"success": true,
"user_id": "12345678",
"zone_id": "1234",
"username": "KendyResellerPro",
"country": "BR",
"double_diamond_available": true,
"status_label": "AVAILABLE",
"tiers": [
{
"name": "50 + 50 Diamonds",
"amount": "50+50",
"diamonds": 100,
"available": true,
"status": "Available"
},
{
"name": "150 + 150 Diamonds",
"amount": "150+150",
"diamonds": 300,
"available": true,
"status": "Available"
},
{
"name": "250 + 250 Diamonds",
"amount": "250+250",
"diamonds": 500,
"available": true,
"status": "Available"
},
{
"name": "500 + 500 Diamonds",
"amount": "500+500",
"diamonds": 1000,
"available": false,
"status": "Not Available"
}
],
"checked_at": "2026-09-23 21:40:00"
}
5. Create Top-up Order
Submits an automated top-up order. Deducts the product price from your wallet balance and triggers instantaneous execution through upstream game publisher APIs.
| Field | Type | Required | Description |
|---|---|---|---|
| public_key | String | Yes | Your Reseller Public Key ID. |
| private_key | String | Yes | Your Reseller Private Secret Signature. |
| userid | String / Int | Yes | Player In-Game User ID. |
| zoneid | String / Int | Yes | Player In-Game Server / Zone ID
(for games without Zone, pass 1 or same
as userid). |
| product_id | Integer | Yes | Internal Product ID from /api/products-list (e.g. 1). |
| payment_method | String | Optional | Default is "wallet". |
{
"public_key": "knd_pub_8a92f01c",
"private_key": "knd_sec_99b34a17ef",
"userid": "12345678",
"zoneid": "1234",
"product_id": 1,
"payment_method": "wallet"
}
{
"success": true,
"order_id": 98452,
"status": "success",
"balance_before": 2500.00,
"balance_after": 2375.00,
"message": "Order created successfully"
}
Automated API order was immediately confirmed and diamonds credited to player account.
Order accepted, wallet deducted, and routed to priority fulfillment queue.
Code Snippets & Integration Examples
Complete ready-to-run scripts in popular programming languages.
# Fetch Wallet Balance
curl -X POST https://kendyenterprises.in/api/fatchbalance \
-H "Content-Type: application/json" \
-d '{"public_key": "YOUR_PUBLIC_KEY", "private_key": "YOUR_PRIVATE_KEY"}'
# Fetch Products List & Reseller Pricing
curl -X POST https://kendyenterprises.in/api/products-list \
-H "Content-Type: application/json" \
-d '{"public_key": "YOUR_PUBLIC_KEY", "private_key": "YOUR_PRIVATE_KEY"}'
# Verify Player Username (MLBB)
curl -X POST https://kendyenterprises.in/api/check-username \
-H "Content-Type: application/json" \
-d '{"userid": "12345678", "zoneid": "1234"}'
# Check MLBB Double Diamond Availability
curl -X POST https://kendyenterprises.in/api/check-double-diamond \
-H "Content-Type: application/json" \
-d '{"userid": "12345678", "zoneid": "1234"}'
# Create Game Top-up Order
curl -X POST https://kendyenterprises.in/api/create-order \
-H "Content-Type: application/json" \
-d '{
"public_key": "YOUR_PUBLIC_KEY",
"private_key": "YOUR_PRIVATE_KEY",
"userid": "12345678",
"zoneid": "1234",
"product_id": 1,
"payment_method": "wallet"
}'
Status & Error Codes Reference
RFC 7231
The API uses conventional HTTP response codes to indicate the success or failure of an API request.
Codes in the 2xx range indicate success, 4xx range indicate errors caused by invalid parameters
or unauthorized keys, and 5xx range indicate upstream
publisher or server issues.
| Code | Status | Meaning & Resolution |
|---|---|---|
| 200 OK | SUCCESS | Request completed successfully. Look for
"success": true in payload. |
| 400 Bad Request | INVALID_PARAMS | Missing required parameters (e.g. userid/zoneid) or insufficient wallet balance for order. |
| 401 Unauthorized | INVALID_KEYS | The provided public_key or private_key does not match any registered
reseller account. |
| 404 Not Found | NOT_FOUND | The requested product ID does not exist or player username could not be found for given UID/Zone. |
| 500 Server Error | SERVER_ERROR | Internal processing error or upstream publisher gateway timeout. Retry in a few seconds. |
Interactive Live API Sandbox
Execute real-time API queries directly in your browser.
// Click "Execute Request" to test endpoint response in real-time...