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"
id → pid Copy 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 /productsid.
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"
Id lookup Use a specific public or internal id with 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"}'
GW Ultimate