Reference
https://api.gwultimatebot.com — every request: X-API-Key or Authorization: Bearer <key>.
Catalog — GET /services
Games and what each one needs in the order body (userId, zoneId, serverId, …). Unavailable games don’t show up.
Response: { "success": true, "services": [ ... ] }
Each service includes: productName, slug, gameName, required (array of field + label), status. Genshin-family lines may also include serverIdOptions when a server is required.
curl -X GET "https://api.gwultimatebot.com/services" -H "X-API-Key: YOUR_API_KEY"
GET /products and /catalog
Alias: GET /catalog returns the same payload as GET /products.
The product database for ordering: one row per active pack with a stable
id (GWPID). That value is what you pass as pid on
POST /orders. Rows include slug, gameName, serviceName, price, stock where applicable, etc.
curl -X GET "https://api.gwultimatebot.com/products" -H "X-API-Key: YOUR_API_KEY"
products[i].id from this response into the order body as pid (or PID).
GET /my-ip
Your public IP as our side sees it.
curl -X GET "https://api.gwultimatebot.com/my-ip" -H "X-API-Key: YOUR_API_KEY"
// { "success": true, "ip": "203.0.113.4" }
GET /balance GET
Current balance in USD. Read-only; top up in Telegram.
curl -X GET "https://api.gwultimatebot.com/balance" -H "X-API-Key: YOUR_API_KEY"
// 200
{
"success": true,
"balanceUsd": 12.5,
"currency": "USD"
}
POST /orders POST
Game is picked from the pid (catalog id).
Body (unified)
| Field | Notes |
|---|---|
pid / PID |
Required. GWPID from GET /products → id. |
trxid (or trxId, idtrx, idTrx) |
Your id for the order. New purchase → new trxid. |
userId / userID |
Required for most games (player / uid / username as defined by the line). |
zoneId |
Required for ML-style lines (numeric zone). |
serverId |
Required for GI / HSR / ZZZ / WUWA / IDV and similar. |
quantity |
Only for gamekey and giftcard kinds. |
idempotencyKey / idempotency |
Optional; if omitted, trxid is used for idempotency as implemented. |
Walkthrough: Orders & status.
Downtime: you may get 503 and MAINTENANCE or API_ORDER_DISABLED — see errors.
GET /history GET
Lists recent orders for this API key only, newest first. The response reuses the same
invoice shape as GET /orders/:orderId (and successful POST /orders)
so you can show history in your panel without re-fetching every id. Single-order lookup remains on
GET /orders/:orderId.
Query: simple limit
Default limit=30 (min 1, max 200).
curl -G "https://api.gwultimatebot.com/history" \
-H "X-API-Key: YOUR_API_KEY" \
--data-urlencode "limit=25"
// 200
{
"success": true,
"count": 25,
"orders": [ { "orderId": "GWAPI-…", "status": "completed", "game": "pubg", ... }, ... ]
}
Query: pagination
Pass page to switch to paged mode (optional pageSize, default 20, max 50). Response
includes total and hasMore.
curl -G "https://api.gwultimatebot.com/history" \
-H "X-API-Key: YOUR_API_KEY" \
--data-urlencode "page=1" \
--data-urlencode "pageSize=20"
GET /orders/:orderId, or poll
a row after POST /orders (see
Guides: lifecycle & examples).
GET /orders/:orderId GET
Look up one order for the authenticated API user.
Accepted orderId forms: numeric internal id; public id
GWAPI-<two-letter game code>-<base36>-<hash>; and user-scoped lookups the bot
may surface in receipts in some cases.
curl -X GET "https://api.gwultimatebot.com/orders/GWAPI-PU-ABC12-DEADBEEF" \
-H "X-API-Key: YOUR_API_KEY"
404 with ORDER NOT FOUND if the id does not belong to your account or does not exist.
Redeem & verify
POST /pubgvvfy
Resolve / verify a PUBG player id (in-game name check) without placing an order.
{
"playerId": "51234567890",
"trxid": "CHK-PUBG-001"
}
curl -X POST "https://api.gwultimatebot.com/pubgvvfy" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{"playerId":"51234567890","trxid":"CHK-PUBG-001"}'
Also accepts playerID, userId / userID in place of playerId per body parser.
POST /mlvfy
Mobile Legends user + zone verification (region / profile check).
{
"userId": "123456789",
"zoneId": "1234",
"trxid": "CHK-ML-001"
}
curl -X POST "https://api.gwultimatebot.com/mlvfy" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{"userId":"123456789","zoneId":"1234","trxid":"CHK-ML-001"}'
POST /rdmpubg — PUBG redemption
Redeem a code to a PUBG player.
{
"playerId": "51234567890",
"code": "ABCD-EFGH-IJKL",
"trxid": "RDM-001"
}
curl -X POST "https://api.gwultimatebot.com/rdmpubg" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{"playerId":"51234567890","code":"ABCD-EFGH-IJKL","trxid":"RDM-001"}'