GamesDrop.io API - Merchant Guide
Welcome to the GamesDrop.io Partner API documentation! This guide provides everything you need to integrate your reseller platform with the GamesDrop network. By integrating, you gain access to our catalog of over 10,000 digital products, ranging from mobile operator top-ups to in-game currency for popular mobile games. Start here to streamline your product offerings and connect your customers to a world of digital goods.
Table of Contents
Authorization
Getting a Token
How to get it
- Log in to your merchant account
- Create a new store
- After creating the store, you will receive a unique token
- Token format:
abcdef1234567890abcdef1234567890
Token Security
- 🔒 The token is confidential information
- ⚠️ Do not share the token with third parties
- 📝 The token cannot be recovered after creation
- 🔄 If necessary, you can generate a new token (the old one will become invalid)
Core Concepts
Order Statuses
Status | Description | Actions |
---|---|---|
SUBMITTED | Order created and awaiting processing | Wait for transition to PROCESSING |
PROCESSING | Order is being processed | Wait for completion |
COMPLETED | Order successfully completed | Receive key/product |
CANCELED | Order canceled due to an error | Create a new order |
REFUND | Order refunded | Wait for funds return |
Possible Errors
Error Code | Description | Solution |
---|---|---|
INVALID_TOKEN | Invalid authorization token | Check the token or get a new one |
OFFER_NOT_FOUND | Product not found or no access | Check Product ID and access rights |
TRANSACTION_DUPLICATE | Duplicate transaction | Use a new transaction_id |
WRONG_PRICE | Incorrect product price | Update price information |
ORDER_NOT_FOUND | Order not found | Check Order ID |
ORDER_NOT_PROCESSING | Order is not yet processing | Wait for transition to PROCESSING |
ORDER_NOT_COMPLETED | Order is not yet completed | Wait for order completion |
ORDER_ALREADY_CANCELED | Order is already canceled | Create a new order |
ORDER_ALREADY_REFUNDED | Order is already refunded | Create a new order |
SERVICE_UNAVAILABLE | Service temporarily unavailable | Retry the request later |
INVALID_REQUEST_BODY | Invalid request format | Check request structure |
INSUFFICIENT_BALANCE | Insufficient account balance | Top up balance or reduce purchase amount |
BALANCE_UNAVAILABLE | Balance temporarily unavailable | Retry the request later |
API Endpoints
Balance Management
Check Balance
HTTPGET /api/v1/balance Authorization: {{token}}
Response:
JSON{
"balance": 500.00,
"draftBalance": 50.00,
"currency": {
"id": 3,
"code": "USD"
}
}
Response fields description:
Key | Value | Notes |
---|---|---|
balance | number | Main partner balance |
draftBalance | number | Draft balance (funds in processing) |
currency | object | Currency information |
currency.id | number | Currency ID in the system |
currency.code | string | Currency code (always USD ) |
Transaction History
HTTPGET /api/v1/balance/transactions?page=1&limit=20 Authorization: {{token}}
Response:
JSON{
"transactions": [
{
"id": 12,
"amount": -75.00,
"type": "PURCHASE",
"description": "API Purchase - Virtual credits",
"balanceAfter": 425.00,
"createdAt": "2025-07-28T05:21:46.121Z"
},
{
"id": 11,
"amount": -50.00,
"type": "PURCHASE",
"description": "Test Purchase - Mobile game credits",
"balanceAfter": 500.00,
"createdAt": "2025-07-28T05:16:23.718Z"
}
],
"total": 25
}
Request fields description:
Key | Value | Notes |
---|---|---|
page | number | Page number (default: 1) |
limit | number | Records per page (default: 20) |
Response fields description:
Key | Value | Notes |
---|---|---|
transactions | array | List of transactions |
transactions[].id | number | Unique transaction ID |
transactions[].amount | number | Operation amount (negative for debits) |
transactions[].type | string | Operation type (DEPOSIT , PURCHASE , REFUND ) |
transactions[].description | string | Operation description |
transactions[].balanceAfter | number | Balance after operation |
transactions[].createdAt | string | Operation date and time (UTC) |
total | number | Total number of transactions |
Getting Product Information
HTTPPOST /api/v1/offers/find-one Authorization: {{token}} { "offerId": 1001 }
Response:
JSON{
"offerId": 1001,
"productName": "PUBG MOBILE GIFT",
"offerName": "60 UC",
"count": 1,
"price": 560.10,
"currency": "RUB",
"isReturnDataForCustomer": true
}
Request fields description:
Key | Value | Notes |
---|---|---|
offerId | number | Important: must be a number, not a string |
Response fields description:
Key | Value | Notes |
---|---|---|
offerId | number | - |
productName | string | - |
offerName | string | - |
count | number | Number of product units |
price | number | - |
currency | KZT | USD |
isReturnDataForCustomer | boolean | Whether an activation key is returned |
Creating an Order
HTTPPOST /api/v1/offers/create-order Authorization: {{token}} { "offerId": 1001, "price": 560.10, "transactionId": "test112321124214", "customer": { "email": "user@gmail.com", "gameUserId": "52357322414" } }
Request fields description:
Key | Value | Notes |
---|---|---|
offerId | number | Important: must be a number, not a string |
price | number | - |
transactionId | string | Unique transaction identifier in your system |
customer | undefined | object |
email | undefined | string |
gameUserId | undefined | string |
Response:
JSON{
"orderId": 10222502,
"count": 1,
"price": 560.10,
"currency": "RUB",
"offerId": 1001,
"productName": "PUBG MOBILE GIFT",
"offerName": "60 UC",
"status": "COMPLETED",
"isReturnDataForCustomer": true,
"key": "001434249936",
"createdAt": "2024-05-28 10:08:04.296+00"
}
Response fields description:
Key | Value | Notes |
---|---|---|
orderId | number | - |
count | number | Number of product units |
price | number | - |
currency | KZT | USD |
offerId | number | - |
productName | string | - |
offerName | string | - |
status | string | Processing may take time for some denominations |
isReturnDataForCustomer | boolean | - |
key | undefined | string |
createdAt | string | UTC +0 |
Check Order Status
HTTPPOST /api/v1/offers/order-status Authorization: {{token}} { "orderId": 10222502 }
Request fields description:
Key | Value | Notes |
---|---|---|
orderId | number | - |
Response:
JSON{
"orderId": 10222502,
"count": 1,
"price": 560.10,
"currency": "RUB",
"offerId": 1001,
"productName": "PUBG MOBILE GIFT",
"offerName": "60 UC",
"status": "COMPLETED",
"isReturnDataForCustomer": true,
"key": "001434249936",
"createdAt": "2024-05-28 10:08:04.296+00"
}
Response fields description:
Key | Value | Notes |
---|---|---|
orderId | number | - |
count | number | Number of product units |
price | number | - |
currency | KZT | USD |
offerId | number | - |
productName | string | - |
offerName | string | - |
status | string | Current status of the order |
isReturnDataForCustomer | boolean | - |
key | undefined | string |
createdAt | string | UTC +0 |
Player Validation
HTTPPOST /api/v1/offers/check-game-data Authorization: {{token}} { "offerId": 1001, "price": 560.10, "transactionId": "112321124214", "customer": { "email": "user@gmail.com", "gameUserId": "52357322414" } }
Request fields description:
Key | Value | Notes |
---|---|---|
offerId | number | Important: must be a number, not a string |
price | number | - |
transactionId | string | Unique transaction identifier |
customer | object | - |
email | undefined | string |
gameUserId | string | Player identifier |
gameServerId | undefined | string |
Successful response:
JSON{
"status": "VALID",
"gameUserLogin": "JJJ"
}
Successful response fields description:
Key | Value | Notes |
---|---|---|
status | "VALID" | Player is valid |
gameUserLogin | string | Player login |
Error response:
JSON{
"status": "INVALID"
}
Error response fields description:
Key | Value | Notes |
---|---|---|
status | "INVALID" | Player is invalid |
API Testing
Test Product
For testing API integration, a special test product is available:
- Product ID: 999
- Name: Steam US
- Offer Name: TEST OFFER GROUP
- Price: 23.09 KZT (important to use exact value)
- Returns Key: Yes
Example request for test product information:
HTTPPOST /api/v1/offers/find-one Authorization: {{token}} { "offerId": 999 }
Example creating test order:
HTTPPOST /api/v1/offers/create-order Authorization: {{token}} { "offerId": 999, "price": 23.09, "transactionId": "test_123456", "customer": { "email": "test@example.com", "gameUserId": "123456789" } }
Test product features:
- Always returns successful response with correct parameters
- Generates test activation key
- Creates order with COMPLETED status
- Player validation always returns VALID for test product
- Works in test mode without real fund deduction
Balance Management Examples
Check balance before purchase:
JAVASCRIPT// 1. Check current balance
const balanceResponse = await fetch('/api/v1/balance', {
headers: { 'Authorization': 'your-token-here' }
});
const { balance } = await balanceResponse.json();
// 2. Get product information
const offerResponse = await fetch('/api/v1/offers/find-one', {
method: 'POST',
headers: {
'Authorization': 'your-token-here',
'Content-Type': 'application/json'
},
body: JSON.stringify({ offerId: 1001 })
});
const { price } = await offerResponse.json();
// 3. Check sufficient funds
if (balance >= price) {
// Create order
console.log('Sufficient balance, creating order...');
} else {
console.log('Insufficient balance, need to top up');
}
Get transaction history:
JAVASCRIPTconst transactionsResponse = await fetch('/api/v1/balance/transactions', {
headers: { 'Authorization': 'your-token-here' }
});
const { transactions, total } = await transactionsResponse.json();
console.log(`Total transactions: ${total}`);
transactions.forEach(tx => {
console.log(`${tx.createdAt}: ${tx.type} ${tx.amount} (Balance: ${tx.balanceAfter})`);
});
Integration Recommendations
💰 Balance Management
- Regularly check balance before large purchases
- Keep track of transactions for reconciliation with your system
- Notify users about need to top up when funds are insufficient
- Use pagination when requesting transaction history
🔍 Before Creating an Order
- Get up-to-date product information
- Check balance to ensure sufficient funds
- Check player validity (for direct top-up)
📝 When Creating an Order
- Use a unique transactionId
- Specify the current price
- Specify offerId as number, not string
- Fill in all required fields for the product type
✅ After Creating an Order
- Save the orderId
- Check the order status
- Upon COMPLETED status, receive the key/product
⚠️ When Errors Occur
- Check the token
- Ensure data correctness and request format
- Create a new order if necessary
Support
If you have any questions, please contact technical support:
- 📧 Email: support@gamesdrop.io
- 💬 Telegram: @gamesdrop_support
Error Handling Recommendations
🔍 Pre-Request Checks
- Token validation
- Product ID verification
- Price accuracy
- Uniqueness of transaction_id
- Correct data format (especially offerId as number)
🛠 Response Handling
- Handle all error codes
- Log errors
- Implement retry mechanism
📊 Order Management
- Save order IDs
- Monitor statuses
- Update data