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

  1. Authorization
  2. Core Concepts
  3. API Endpoints
  4. API Testing
  5. Integration Recommendations
  6. Support

Authorization

Getting a Token

How to get it

  1. Log in to your merchant account
  2. Create a new store
  3. After creating the store, you will receive a unique token
  4. 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

StatusDescriptionActions
SUBMITTEDOrder created and awaiting processingWait for transition to PROCESSING
PROCESSINGOrder is being processedWait for completion
COMPLETEDOrder successfully completedReceive key/product
CANCELEDOrder canceled due to an errorCreate a new order
REFUNDOrder refundedWait for funds return

Possible Errors

Error CodeDescriptionSolution
INVALID_TOKENInvalid authorization tokenCheck the token or get a new one
OFFER_NOT_FOUNDProduct not found or no accessCheck Product ID and access rights
TRANSACTION_DUPLICATEDuplicate transactionUse a new transaction_id
WRONG_PRICEIncorrect product priceUpdate price information
ORDER_NOT_FOUNDOrder not foundCheck Order ID
ORDER_NOT_PROCESSINGOrder is not yet processingWait for transition to PROCESSING
ORDER_NOT_COMPLETEDOrder is not yet completedWait for order completion
ORDER_ALREADY_CANCELEDOrder is already canceledCreate a new order
ORDER_ALREADY_REFUNDEDOrder is already refundedCreate a new order
SERVICE_UNAVAILABLEService temporarily unavailableRetry the request later
INVALID_REQUEST_BODYInvalid request formatCheck request structure
INSUFFICIENT_BALANCEInsufficient account balanceTop up balance or reduce purchase amount
BALANCE_UNAVAILABLEBalance temporarily unavailableRetry the request later

API Endpoints

Balance Management

Check Balance

HTTP
GET /api/v1/balance
Authorization: {{token}}

Response:

JSON
{
  "balance": 500.00,
  "draftBalance": 50.00,
  "currency": {
    "id": 3,
    "code": "USD"
  }
}

Response fields description:

KeyValueNotes
balancenumberMain partner balance
draftBalancenumberDraft balance (funds in processing)
currencyobjectCurrency information
currency.idnumberCurrency ID in the system
currency.codestringCurrency code (always USD)

Transaction History

HTTP
GET /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:

KeyValueNotes
pagenumberPage number (default: 1)
limitnumberRecords per page (default: 20)

Response fields description:

KeyValueNotes
transactionsarrayList of transactions
transactions[].idnumberUnique transaction ID
transactions[].amountnumberOperation amount (negative for debits)
transactions[].typestringOperation type (DEPOSIT, PURCHASE, REFUND)
transactions[].descriptionstringOperation description
transactions[].balanceAfternumberBalance after operation
transactions[].createdAtstringOperation date and time (UTC)
totalnumberTotal number of transactions

Getting Product Information

HTTP
POST /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:

KeyValueNotes
offerIdnumberImportant: must be a number, not a string

Response fields description:

KeyValueNotes
offerIdnumber-
productNamestring-
offerNamestring-
countnumberNumber of product units
pricenumber-
currencyKZTUSD
isReturnDataForCustomerbooleanWhether an activation key is returned

Creating an Order

HTTP
POST /api/v1/offers/create-order
Authorization: {{token}}

{
  "offerId": 1001,
  "price": 560.10,
  "transactionId": "test112321124214",
  "customer": {
    "email": "user@gmail.com",
    "gameUserId": "52357322414"
  }
}

Request fields description:

KeyValueNotes
offerIdnumberImportant: must be a number, not a string
pricenumber-
transactionIdstringUnique transaction identifier in your system
customerundefinedobject
emailundefinedstring
gameUserIdundefinedstring

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:

KeyValueNotes
orderIdnumber-
countnumberNumber of product units
pricenumber-
currencyKZTUSD
offerIdnumber-
productNamestring-
offerNamestring-
statusstringProcessing may take time for some denominations
isReturnDataForCustomerboolean-
keyundefinedstring
createdAtstringUTC +0

Check Order Status

HTTP
POST /api/v1/offers/order-status
Authorization: {{token}}

{
  "orderId": 10222502
}

Request fields description:

KeyValueNotes
orderIdnumber-

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:

KeyValueNotes
orderIdnumber-
countnumberNumber of product units
pricenumber-
currencyKZTUSD
offerIdnumber-
productNamestring-
offerNamestring-
statusstringCurrent status of the order
isReturnDataForCustomerboolean-
keyundefinedstring
createdAtstringUTC +0

Player Validation

HTTP
POST /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:

KeyValueNotes
offerIdnumberImportant: must be a number, not a string
pricenumber-
transactionIdstringUnique transaction identifier
customerobject-
emailundefinedstring
gameUserIdstringPlayer identifier
gameServerIdundefinedstring

Successful response:

JSON
{
  "status": "VALID",
  "gameUserLogin": "JJJ"
}

Successful response fields description:

KeyValueNotes
status"VALID"Player is valid
gameUserLoginstringPlayer login

Error response:

JSON
{
  "status": "INVALID"
}

Error response fields description:

KeyValueNotes
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:

HTTP
POST /api/v1/offers/find-one
Authorization: {{token}}

{
  "offerId": 999
}

Example creating test order:

HTTP
POST /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:

JAVASCRIPT
const 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:

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