Rest · JSON · Key auth

Inventory, priced and delivered, over HTTP.

Six endpoints against your bot wallet. Edit and run a request below — the figures move because the order really executed.

Base URL
https://api.warzoneshop.in
Wallet
$42.75
Stock
4552
Orders
0
Calls
0

Sandbox figures — this ledger lives in your browser. Your real balance is in the bot.

Console Simulated
3 req/s per key · 3/s per IP
Live mode. Requests go to api.warzoneshop.in with the key you enter below. Your key is kept in memory only — it is never saved, never put in the URL, and never included in Copy as curl. A reload will ask for it again, on purpose: this key can spend your balance.
Wallet
—
Orders
—
Spent (all time)
—
Calls
—

Open the bot, tap API Key, paste it here.

—
Choose an endpoint and press Send Request.

Authentication

API Key on the bot’s main menu creates the key on first tap; Revoke API Key, same panel, kills it instantly and for good. A new key reads the same account — balance, history and old-key orders unchanged.

Header
X-API-Key: WAR_example_not_a_real_key

The key can spend your balance, so treat it like a password. It reaches nobody else’s wallet, stock or orders.

Top up in Telegram. Spend anywhere.

Errors & limits

3 requests per second per key, and the same again per IP address before the key is even read. Bursts are not queued. Every failure returns the same shape, {"error": "..."}. Click any code to fire it in the console:

CodeMeaningWhat to do
400Bad parameters, out of stock, or insufficient balanceRead error; do not retry blindly
401Key missing or unknownCheck the header
403Key revokedIssue a new one in the bot
404No such order or endpointCheck the id
405Wrong method for that pathCheck the verb; the path itself exists
413Body larger than 64 KBSend only service_id and quantity
429Rate limitedBack off, then retry
500Internal error — already logged on our sideSafe to retry on GET. On POST /order, check GET /orders first — the order may exist
503At capacity, shop in maintenance, or that service stopped sellingSafe to retry — nothing was charged

An order either completes or changes nothing. A 400 never debits your balance and never consumes stock. On POST /order, retry only 503 and 429 — neither reached the purchase path; for 429 wait out the Retry-After header.

Code examples

Snippets follow the console’s selected endpoint. Substitute $BASE and $KEY.


        

Reads — five endpoints, none of them can change anything

GET

Your account

GET/api/v1/me
Request
curl "$BASE/api/v1/me" -H "X-API-Key: $KEY"
200
{
  "chat_id": 1000000000,
  "first_name": "Alex",
  "wallet_balance": 42.75
}
401
{
  "error": "Missing X-API-Key header"
}
GET

Products & stock

GET/api/v1/products

Stock moves constantly, so read this before ordering.

Request
curl "$BASE/api/v1/products" -H "X-API-Key: $KEY"
200
{
  "services": [
    {
      "service_id": "S_01",
      "name": "Gemini AI Pro 18Months - 15hour Hold warranty",
      "price": 0.50,
      "stock": 4552,
      "in_stock": true,
      "pricing": "tiered",
      "orderable": true,
      "price_tiers": [
        { "min_qty": 1,  "max_qty": 10,    "unit_price": 0.50 },
        { "min_qty": 11, "max_qty": 49,    "unit_price": 0.45 },
        { "min_qty": 50, "max_qty": 10000, "unit_price": 0.40 }
      ]
    }
  ]
}
FieldTypeNotes
service_idstringThe id you order with. Stable; store it.
namestringDisplay name, plain text
pricenumber | nullYour unit price at quantity 1. null when pricing is "unavailable".
stocknumberUnits available right now
in_stockbooleanFalse when we have paused selling this service
pricingstring"tiered", "custom" or "unavailable"
price_tiersarray | nullnull on a negotiated flat rate
orderablebooleanGate your buy on this one. True only when the service is priced, selling, and has stock.

pricing is the regime your key is on; under "tiered" a bulk total is lower than price × quantity. Step the console quantity across a boundary.

Negotiated flat rate: pricing is "custom" and price_tiers is null. One price at every quantity: total = price × quantity exactly — never a tier table you were not given. Console Live mode reads your own regime from /products.

The third state: pricing is "unavailable", price is null, price_tiers is [], orderable is false. POST /order for it answers 400 “No pricing tier configured for this quantity”. New listings start here: handle price === null.

Spends — one endpoint, and it moves real money

POST

Place an order

POST/api/v1/order

Buys immediately, returning activation links inline. Store products on receipt — and if you lose the response, re-fetch them from GET /order/{order_id}.

FieldTypeNotes
service_idstringrequiredFrom /products, e.g. S_01
quantitynumberrequiredWhole number, 1 to 10000
Request
curl -X POST "$BASE/api/v1/order" \
  -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{"service_id":"S_01","quantity":2}'
200
{
  "success": true,
  "order_id": "ORD-04621-9a84",
  "service_id": "S_01",
  "quantity": 2,
  "unit_price": 0.50,
  "total_cost": 1.20,
  "new_balance": 41.55,
  "products": [
    "https://serviceactivation.google.com/subscription/new/AQC1x…",
    "https://serviceactivation.google.com/subscription/new/AQC2y…"
  ]
}
400 · not enough stock
{
  "error": "Only 3 accounts available. Requested 10."
}
400 · wallet short
{
  "error": "Insufficient Wallet Balance! You need $6.05 but have $2.10."
}
GET

Order history

GET/api/v1/orders

Your account’s whole history — Telegram and API orders in one list, newest first, with the delivered links to re-fetch. Paginated: page and limit are optional, and total_pages in the reply tells you how many there are.

An out-of-range value is an error, not a ceiling. limit=500 returns 400 limit must be between 1 and 200 rather than quietly giving you 200 rows.

Two different totals, deliberately. total_orders here counts every order row, because that is what total_pages divides. The counts object breaks it down, and counts.paid is the one that cost money (success plus undelivered). On /stats, total_orders is your account’s own lifetime purchase counter — and counts there is identical to this one, so the two responses can be compared directly.

QueryTypeNotes
pagenumberoptionalDefaults to 1
limitnumberoptionalDefaults to 50. Maximum 200 — a larger value returns 400, it is not silently reduced
Request
curl "$BASE/api/v1/orders?page=1&limit=50" \
  -H "X-API-Key: $KEY"

Listed orders omit unit_price; divide amount / quantity. created_at is IST (UTC+05:30) as YYYY-MM-DD HH:MM:SS — parse as Asia/Kolkata, not UTC.

200
{
  "success": true,
  "page": 1,
  "limit": 50,
  "total_orders": 137,
  "total_pages": 3,
  "orders": [
    {
      "order_id": "ORD-04621-9a84",
      "service_id": "S_01",
      "service": "Gemini AI Pro 18Months - 15hour Hold warranty",
      "quantity": 11,
      "amount": 6.05,
      "status": "success",
      "created_at": "2026-08-20 14:02:11",
      "delivered_products": ["https://…"]
    }
  ]
}
GET

One order

GET/api/v1/order/{id}

Any order on your account — Telegram or API. Other people’s return 404, the same as one that does not exist.

Request
curl "$BASE/api/v1/order/ORD-04621-9a84" \
  -H "X-API-Key: $KEY"

Order ids are ORD-<5 digits>-<4 hex>; the delivery message omits the ORD- — so 04621-9a84 reaches the same order. Either form, either case. A bare sequence number matching two of your orders returns 404 asking for the full id.

200
{
  "success": true,
  "order": {
    "order_id": "ORD-04621-9a84",
    "service_id": "S_01",
    "service": "Gemini AI Pro 18Months - 15hour Hold warranty",
    "quantity": 11,
    "amount": 6.05,
    "status": "success",
    "created_at": "2026-08-20 14:02:11",
    "delivered_products": ["https://…"]
  }
}
404
{
  "error": "No such order"
}
GET

Statistics

GET/api/v1/stats

Account totals plus a per-service breakdown. Telegram and API purchases count together.

Lifetime only. No date range or time bucketing. Per day: page /orders, group by created_at.

Request
curl "$BASE/api/v1/stats" -H "X-API-Key: $KEY"
200
{
  "success": true,
  "wallet_balance": 42.75,
  "total_orders": 137,
  "total_spent": 391.05,
  "products_breakdown": [
    {
      "service_id": "S_01",
      "name": "Gemini AI Pro 18Months - 15hour Hold warranty",
      "quantity_sold": 318,
      "revenue": 174.90
    }
  ]
}