Orders & status
Base URL: https://api.sonofutred.com.
Use pid from GET https://api.sonofutred.com/products.
Fast delivery — place an order, then check status when you need an update.
Reseller tip
Reuse the same
trxid on retries so you never double-charge.
GET vs POST (rules)
GET: no body. Query string only when we show it (e.g. /history?limit=20).
POST: Content-Type: application/json when a body is listed.
| Goal | Method & path |
|---|---|
| Service lines & field requirements | GET /services |
| Catalog (GWPIDs, prices, stock where applicable) | GET /products or /catalog |
| Public IP the API sees | GET /my-ip |
| Balance in USD (read only) | GET /balance |
| Order history (newest first) or paginated | GET /history?limit= … |
| One order by id (poll status) | GET /orders/:orderId |
| Place an order | POST /orders |
| PUBG / ML verify, PUBG redeem (see ref) | POST /pubgvvfy, /mlvfy, /rdmpubg |
GWPID (pid)
GET /products → use id as pid.
userId only
{
"pid": "GWP60",
"userId": "51234567890",
"trxid": "INV-10001"
}
userId + zoneId
{
"pid": "GWML86",
"userId": "123456789",
"zoneId": "1234",
"trxid": "ML-ORD-2001"
}
userId + serverId
{
"pid": "GWGI6480",
"userId": "800012345",
"serverId": "asia",
"trxid": "GI-ORD-3001"
}
RIOT ID
{
"pid": "GWVALMY475",
"userId": "Player Name#TAG",
"trxid": "VAL-ORD-5001"
}
Once Human
{
"pid": "GWOH62",
"userId": "player_01",
"region": "Europe",
"moreId": "srv001",
"trxid": "OH-ORD-6001"
}
{
"orderCreated": true,
"orderId": "GW-API-OH-A1B2C3-D4E5F6A7",
"status": "processing",
"game": "oncehuman",
"userId": "player_01",
"serverId": "Europe",
"moreId": "srv001",
"amountUsd": 0.99
}
{
"orderCreated": true,
"orderId": "GW-API-OH-A1B2C3-D4E5F6A7",
"status": "completed",
"game": "oncehuman",
"amountUsd": 0.99,
"durationSec": 12
}
{
"orderCreated": false,
"status": "cancelled",
"game": "oncehuman",
"error": "INSUFFICIENT BALANCE"
}
PUBG Subscription
{
"pid": "GWPSP1",
"userId": "51234567890",
"trxid": "PS-ORD-7001"
}
Live apps
{
"pid": "GWBGO100",
"userId": "1234567890",
"trxid": "LIVE-ORD-8001"
}
Free Fire
{
"pid": "GWFFBD100",
"userId": "123456789",
"trxid": "FF-ORD-9001"
}
Game keys & gift cards
{
"pid": "GWGKPU60",
"quantity": 2,
"trxid": "GK-BULK-4001"
}
Place an order
- Submit —
POST /orderswithpid, account fields, and a newtrxid. - Processing — if
statusisprocessing, pollGET /orders/:orderIdevery 3–10s. - Completed — stop when
statusiscompleted(success) orcancelled(failure; readerror/refunded).
Balance
{
"success": true,
"balanceUsd": 12.5,
"currency": "USD"
}
Submit — POST /orders → processing
curl -X POST "https://api.sonofutred.com/orders" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{"pid":"GWPUBG60","userId":"51234567890","trxid":"ORD-1001"}'
// Response 200
{
"orderCreated": true,
"orderId": "GW-API-PBG-A1B2C3-D4E5F6A7",
"status": "processing",
"game": "pubg",
"packName": "60 UC",
"amountUsd": 0.99,
"durationSec": 1,
"userId": "51234567890"
}
Completed
{
"orderCreated": true,
"orderId": "GW-API-PBG-A1B2C3-D4E5F6A7",
"status": "completed",
"game": "pubg",
"packName": "60 UC",
"amountUsd": 0.99,
"durationSec": 34,
"userId": "51234567890"
}
Cancelled after placement
{
"orderCreated": true,
"orderId": "GW-API-PBG-A1B2C3-D4E5F6A7",
"status": "cancelled",
"game": "pubg",
"packName": "60 UC",
"amountUsd": 0.99,
"durationSec": 18,
"userId": "51234567890",
"error": "INVALID PLAYER",
"refunded": true
}
Rejected at submit
{
"success": false,
"error": "UNKNOWN PID"
}
{
"orderCreated": false,
"status": "cancelled",
"game": "pubg",
"error": "INSUFFICIENT BALANCE"
}
GET /history
{
"success": true,
"count": 10,
"orders": [
{
"orderCreated": true,
"orderId": "GW-API-PBG-A1B2C3-D4E5F6A7",
"status": "completed",
"game": "pubg",
"packName": "60 UC",
"amountUsd": 0.99,
"userId": "51234567890"
}
]
}
GET /orders/:id
{
"orderCreated": true,
"orderId": "GW-API-PBG-A1B2C3-D4E5F6A7",
"status": "completed",
"game": "pubg",
"packName": "60 UC",
"amountUsd": 0.99,
"durationSec": 12,
"userId": "51234567890"
}
Order status
| Status | Meaning | Poll? |
|---|---|---|
processing |
Accepted — fulfillment in progress (pending is mapped to this) |
Yes — every 3–10s |
completed |
Delivered successfully | No |
cancelled |
Failed / rejected — see error, refunded |
No |
orderCreated |
status |
Meaning |
|---|---|---|
true |
processing |
Submit accepted; still working |
true |
completed |
Done |
true |
cancelled |
Placed then failed (often refunded) |
false |
cancelled |
Rejected at submit (e.g. no balance, bad pid) |
Tips
- New order → new
trxid. Reuse the sametrxidonly when you mean the same purchase. GET /historyfor your last purchased history;GET /orders/<id>to check one id.- Balance is read-only. Need more? Top up in Telegram.
- Verify / redeem examples (success + fail): Reference → Redeem & verify.