Your Game Store

Reseller API

Sell every product and package from Your Game Store on your own website. Your site calls our API, we deliver the top-up, and the cost is taken from your wallet at your reseller price.

How it works

  1. Create an account and generate an API key.
  2. Activate a plan — Monthly (activated by the admin) or Lifetime (admin-granted, no fee per order).
  3. Add money to your wallet, then call the API from your server.

Monthly plan: up to 500 calls per day (admin can change it per account), and a fee of ₹1 per order (refunded if the order fails). When the plan ends the API stops working until you renew or the admin activates it again.

Authentication

Base URL: https://www.krtachouofficial.shop/api/v1 (HTTPS only). Send your key in a header on every request:

Authorization: Bearer YOUR_API_KEY

(X-API-Key: YOUR_API_KEY also works.) Keep the key on your server — never put it in website JavaScript or an app. If a key leaks, delete it in your dashboard and create a new one.

Responses are JSON: {"success":true,"data":…} or {"success":false,"error":{"code":"…","message":"…"}}. Every response carries X-RateLimit-Limit and X-RateLimit-Remaining (your daily calls; every authenticated call counts).

Order status values

processing being delivered · pending manual delivery in progress · completed delivered · failed rejected — price and fee are refunded to your wallet automatically · cancelled cancelled by admin and refunded. Poll GET /orders/{order_id} until the status is final.

GET/me

Account & plan — Your plan, wallet balance, today's usage and fee per order.

Response
{"success":true,"data":{"name":"Shop","balance":1250.5,"currency":"INR","plan":"monthly","status":"active","plan_expires_at":"2026-11-12 10:00:00","days_left":29,"daily_limit":500,"calls_today":12,"fee_per_order":1}}

GET/balance

Wallet balance — Current wallet balance (orders are paid from it).

Response
{"success":true,"data":{"balance":1250.5,"currency":"INR"}}

GET/products

List products — All products that have at least one available package.

Response
{"success":true,"count":1,"data":[{"id":3,"name":"Mobile Legends","publisher":"MONTOON","category":"MLBB","image":"https://…/uploads/img.png","delivery_type":"uid_zone","fields":{"player_id":{"label":"User ID","required":true},"server_id":{"label":"Zone ID","required":true,"used":true}},"can_verify":true,"packages_count":12}]}

GET/products/{id}

Product + packages — One product with all its packages and your reseller prices.

Response
{"success":true,"data":{"id":3,"name":"Mobile Legends","packages":[{"id":41,"name":"86 Diamonds","price":68.5,"image":null,"auto_delivery":true}]}}

POST/verify

Verify a player — Checks that the account exists and returns the in-game name. Optional but recommended — orders are verified automatically too.

Body (JSON)
{"product_id":3,"package_id":41,"player_id":"123456789","server_id":"2345"}
Response
{"success":true,"data":{"verified":true,"can_verify":true,"player_name":"ProGamer","region":"IN"}}

POST/orders

Create an order — Buys a package. The price + fee is taken from your wallet. Send a unique client_ref (your own order number): sending the same one again never creates a second order.

Body (JSON)
{"product_id":3,"package_id":41,"player_id":"123456789","server_id":"2345","client_ref":"SHOP-10042"}
Response
{"success":true,"duplicate":false,"data":{"order_id":9871,"reference":"JG9871AB12CD","client_ref":"SHOP-10042","status":"completed","refunded":false,"product":"Mobile Legends","package":"86 Diamonds","player_name":"ProGamer","price":68.5,"fee":1,"total_charged":69.5,"created_at":"2026-10-13 10:15:00"},"balance":1181}

GET/orders/{order_id}

Order status — Check one order. You can also use GET /orders?client_ref=SHOP-10042.

Response
{"success":true,"data":{"order_id":9871,"status":"completed", "…":"…"}}

GET/orders

List orders — Your API orders, newest first. Query: page, limit (max 100), status, client_ref.

Response
{"success":true,"page":1,"per_page":25,"total":240,"data":[{"order_id":9871,"status":"completed","…":"…"}]}

Example — place an order

cURL
curl -X POST https://www.krtachouofficial.shop/api/v1/orders \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"product_id":3,"package_id":41,"player_id":"123456789","server_id":"2345","client_ref":"SHOP-10042"}'
PHP
$ch = curl_init('https://www.krtachouofficial.shop/api/v1/orders');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey, 'Content-Type: application/json'],
  CURLOPT_POSTFIELDS => json_encode(['product_id'=>3,'package_id'=>41,'player_id'=>'123456789','server_id'=>'2345','client_ref'=>'SHOP-10042']),
]);
$res = json_decode(curl_exec($ch), true);
Node.js
const res = await fetch('https://www.krtachouofficial.shop/api/v1/orders', {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.JOU_API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ product_id: 3, package_id: 41, player_id: '123456789', server_id: '2345', client_ref: 'SHOP-10042' })
}).then(r => r.json());

Errors

HTTPCodeMeaning
401MISSING_API_KEY / INVALID_API_KEYNo key sent, or the key is wrong / deleted / disabled.
403PLAN_EXPIREDMonthly plan ended. API is paused until you renew or the admin activates it.
403ACCOUNT_NOT_ACTIVENo plan activated yet (or request still pending).
403ACCOUNT_DEACTIVATEDThe admin switched your API access off.
402INSUFFICIENT_BALANCEWallet too low for price + fee. Top up your wallet.
404PRODUCT_NOT_FOUND / PACKAGE_NOT_FOUND / ORDER_NOT_FOUNDThe ID does not exist.
422INVALID_REQUEST / INVALID_PLAYER / PLAYER_NOT_FOUNDMissing field, bad ID format, or the player account does not exist.
429DAILY_LIMIT_REACHEDYour daily call limit is used up. Resets at midnight IST (see Retry-After).
503VERIFY_UNAVAILABLEPlayer check is temporarily down — retry shortly. No money was taken.

Good practice

  • Always send a unique client_ref. If your request times out, repeat it with the same client_ref — you will get the original order back instead of being charged twice.
  • Do not retry an order that returned processing; check its status instead.
  • Prices can change — read them from /products/{id} instead of hard-coding, and add your own margin on top.
Welcome BackDear User
G
HomeAnnouncementCheck ML RegionDouble DiamondGift CardLeaderboardReseller APIHelp & SupportMy AccountRefer & EarnPrivacy PolicyTerms & ConditionsRefund Policy
Useful links
LoginRegister
Website Design & Developed by ~chawang_digitalz
Dark