LLioGames
Developer API

Build game top-up & gift card reseller integrations

Discover products, read reseller pricing, validate player input, verify wallet balance, create idempotent orders and track asynchronous fulfilment from one documented API.

HMAC-SHA256JSONIdempotent ordersBackground fulfilmentWebhook + polling

Quick start

The public catalogue can be read without login. Wallet and order actions are authenticated. Orders are accepted locally first, then supplier fulfilment runs in the background so your API request stays fast.

1. Discover product2. Read schema3. Check price4. Create order5. Webhook / poll
Clean API base: https://distribution.liogames.com/api/v1

Authentication

Signed partner requests use your Member ID and private Secret. Sign the exact raw JSON body with HMAC-SHA256.

HEADERx-liog-sign: hash_hmac('sha256', RAW_JSON, SECRET)
$body = json_encode($payload, JSON_UNESCAPED_SLASHES);
$signature = hash_hmac('sha256', $body, $secret);

Never expose the Secret in browser JavaScript, mobile apps, public repositories or screenshots.

Products & variations

GEThttps://distribution.liogames.com/api/v1/products
GEThttps://distribution.liogames.com/api/v1/products/{product_id}/variations

Public product pages and machine-readable pricing are also available through /catalog/ and /catalog.json. Provider names, supplier credentials and fulfilment IDs are not part of the public contract.

Product input schema

GEThttps://distribution.liogames.com/api/v1/product-schema?product_id={ID}&variation_id={VID}

Call Product Schema before building the order form. It tells your integration whether the selected product needs a player/user ID, server/zone, region or another supported field.

Reseller price matrix

GEThttps://distribution.liogames.com/api/v1/products/{product_id}/price-matrix

Returns the published Normal, GOLD, VIP and H2H prices for each variation. Public catalogue pricing is server-rendered so search engines and AI systems can read it without executing client JavaScript.

Username / player verification

POSThttps://distribution.liogames.com/api/v1/username-check

Use the signed username endpoint before submitting products where player verification is supported.

{
  "member_code": "YOUR_MEMBER_CODE",
  "game": "mobile-legends",
  "user_id": "1393323764",
  "server_id": "15748"
}

Wallet balance

POSThttps://distribution.liogames.com/api/v1/balance
{
  "member_code": "YOUR_MEMBER_CODE"
}

The wallet is checked before an order is queued. Insufficient balance fails before supplier fulfilment is dispatched.

Create order

POSThttps://distribution.liogames.com/api/v1/order-create
FieldUse
member_codeYour Member ID.
product_idProduct ID from the public catalogue.
variation_idPack / denomination variation.
partner_refYour unique idempotency reference. Reuse it on retries.
user_id / player_idWhen Product Schema requires it.
server_idWhen Product Schema requires it.
{
  "member_code": "YOUR_MEMBER_CODE",
  "product_id": 65482,
  "variation_id": 393960,
  "user_id": "1739190042",
  "server_id": "18419",
  "partner_ref": "ORDER-100042"
}
Local order → trust verification → exact wallet debit → background fulfilment queue → immediate API response.

Order status & delivery

POSThttps://distribution.liogames.com/api/v1/order-status

Poll by LioGames order ID or your stable partner reference. Processing orders should not be recreated. Completed voucher orders can include saved delivery/SN data after provider completion is verified.

Webhooks

Set your HTTPS callback URL in the reseller panel. Webhook events are notifications; your integration should treat the authenticated LioGames order-status endpoint as the reconciliation source when needed.

Return a 2xx response quickly and process heavy work asynchronously.

Error handling

Parse ok, code, message and data. Keep the same partner_ref after a network timeout.

CodeMeaningAction
INSUFFICIENT_BALANCEWallet cannot cover the order.Fund wallet before retrying.
INVALID_SIGNATUREHMAC validation failed.Sign the exact raw JSON body.
NOT_ALLOWEDProduct/access rule rejected.Refresh access/product data.
PROCESSINGOrder is not terminal yet.Wait for webhook or poll status.

Fast catalogue updates

Supplier catalogue refresh is handled by background jobs. Current configured intervals are approximately 15 minutes for top-ups and 15 minutes for gift cards. Product/price changes invalidate the public catalogue version automatically.

/catalog.json supports short public caching and ETag validation so integrations and crawlers can refresh efficiently without repeatedly downloading unchanged data.