Hexabot API
The Hexabot API connects your platform with sellers who use Hexabot — specifically Hexabot Unipin Sellers. You can only use this API service if you are signed up with one of the Hexabot bots and the Merchant (Unipin Seller or Supplier) has generated an API key for you. Otherwise, Hexabot Technologies does not sell any kind of Unipin Voucher, Free Fire UID, or Shell top-ups directly. All stock accessed through this API comes from the merchant bot you are signed up with, once they have created an API key for you.
বাংলা
Hexabot API হলো একটি সংযোগ মাধ্যম যা আপনার প্ল্যাটফর্মকে hexabot ব্যবহারকারী বিক্রেতাদের (hexabot Unipin Sellers) সাথে সংযুক্ত করে। এই API সেবা শুধুমাত্র তখনই ব্যবহার করা যাবে যখন আপনি কোনো একটি Hexabot বটে নিবন্ধিত থাকবেন এবং উক্ত Merchant (Unipin বিক্রেতা বা সরবরাহকারী) আপনার জন্য একটি API কী তৈরি করে দিবেন। অন্যথায়, hexabot Technologies সরাসরি কোনো ধরনের Unipin Voucher, Free Fire UID বা Shell টপ-আপ বিক্রি করে না। এই API-এর মাধ্যমে প্রাপ্ত সমস্ত স্টক আসে সেই Merchant বট থেকে, যেখানে আপনি সাইন আপ করেছেন এবং তারা আপনার জন্য API কী তৈরি করেছেন।
Base URL
http://api.hexabot.shop
Sync vs Async: /uc and /shell are synchronous — they return voucher codes immediately in the response. /tp is async — it accepts the order and sends the result to your url webhook when done.
Authentication
Pass your API key in the X-API-Key header on every request. Your merchant ID goes in the query string.
X-API-Key: fl_yourkey
?merchant=YOUR_MERCHANT_ID
Contact your Unipin seller and bot developer to receive your API key and merchant ID.
Common Errors
| Response | Status | Meaning |
|---|---|---|
| {"detail": "Invalid API key"} | 401 | Wrong or missing API key |
| {"detail": "User not found"} | 401 | You are not signed up in the bot |
| {"detail": "orders is required"} | 400 | Item field was empty |
| {"detail": "currency must be bdt or usdt"} | 400 | Invalid currency value |
| {"detail": "USDT not active"} | 403 | USDT not enabled for your account |
| {"detail": "Unknown product: xyz"} | 400 | Invalid UC product code |
| {"detail": "Unknown shell products: xyz"} | 400 | Invalid shell product code |
| {"detail": "Price not configured"} | 400 | Price not set for your account |
| {"detail": "Baki system is off"} | 403 | Due/credit system disabled |
| {"error": "insufficient_balance"} | 402 | Not enough balance |
| {"error": "due_limit_exceeded"} | 402 | Due limit reached |
| {"error": "out_of_stock"} | 409 | Stock empty — retry in ~40s |
Free Fire Player Info
Look up any Free Fire player by UID and region. Returns the player's nickname instantly — useful for verification before placing a top-up order.
Query parameters
| Field | Type | Required |
|---|---|---|
| uid | string | required |
| region | string | required |
| token | string | required |
region — e.g. BD, SG, MY, IND
Example request
curl "http://api.hexabot.shop/getinfo?uid=2716319203®ion=BD&token=your_api_key"
Buy Unipin Voucher Codes
Purchase Unipin voucher codes instantly. The response contains the actual voucher codes ready to deliver to your customer. No webhook needed — codes come back in the HTTP response.
Body parameters
| Field | Type | Required |
|---|---|---|
| item | string | required |
| currency | string | required |
| credit | string | required |
| orderid | string | required |
item — UC denomination and quantity, e.g. 80:5,161:2 (see item reference below).
currency — bdt or usdt.
credit — balance (deduct from balance) or baki (use due/credit system).
Example — pay with balance
curl -X POST "http://api.hexabot.shop/uc?merchant=7024464702" \
-H "X-API-Key: fl_yourkey" \
-H "Content-Type: application/json" \
-d '{
"item": "80:5,161:5,405:5",
"currency": "bdt",
"credit": "balance",
"orderid": "191"
}'
Response
{
"status": "success",
"orderid": "191",
"currency": "bdt",
"payment": "balance",
"total": 750.00,
"balance_after": 250.00,
"due_after": 0.0,
"codes": {
"80UC": {
"label": "115 ◆",
"codes": [
"BDMB-J-S-03811638 5562-1363-6736-1546",
"BDMB-J-S-03814108 8717-4446-3425-9452"
],
"qty": 2,
"price": 50.00
},
"161UC": {
"label": "Weekly ◆",
"codes": [
"BDMB-Q-S-12511213 1111-7557-1794-1734"
],
"qty": 1,
"price": 60.00
}
}
}
Response — with due (baki) credit
When credit: "baki" and balance runs out, the shortfall is added to due_after.
{
"status": "success",
"orderid": "191",
"payment": "baki",
"total": 750.00,
"balance_after": 0.00,
"due_after": 350.00,
"codes": { "...": "same structure as above" }
}
UC Item Reference
Use these item codes in the item field, formatted as code:qty. Multiple items comma-separated.
| Item Code | UC Amount | Diamond Value |
|---|---|---|
| 20:1 | 20 UC | 25 ◆ |
| 36:1 | 36 UC | 50 ◆ |
| 80:1 | 80 UC | 115 ◆ |
| 160:1 | 160 UC | 240 ◆ |
| 161:1 | 161 UC | Weekly ◆ |
| 405:1 | 405 UC | 610 ◆ |
| 800:1 | 800 UC | Monthly ◆ |
| 810:1 | 810 UC | 1240 ◆ |
| 1625:1 | 1625 UC | 2530 ◆ |
| 2000:1 | 2000 UC | Wallet-loadable UC |
Alternate aliases also accepted: 25:1 = 20UC, 50:1 = 36UC, 115:1 = 80UC, 240:1 = 160UC, weekly:1 = 161UC, 610:1 = 405UC, monthly:1 = 800UC, etc.
Buy Garena Shell Codes
Purchase Garena Prepaid Card PINs (shell codes) instantly. Codes are returned directly in the response — no webhook.
Body parameters
| Field | Type | Required |
|---|---|---|
| item | string | required |
| currency | string | required |
| credit | string | required |
| orderid | string | required |
Example — single shell type
curl -X POST "http://api.hexabot.shop/shell?merchant=7024464702" \
-H "X-API-Key: fl_yourkey" \
-H "Content-Type: application/json" \
-d '{
"item": "50:2",
"currency": "bdt",
"credit": "balance",
"orderid": "192"
}'
Response
{
"status": "success",
"orderid": "192",
"currency": "bdt",
"payment": "balance",
"total": 300.00,
"balance_after": 700.00,
"due_after": 0.0,
"codes": {
"50Sgshell": {
"codes": ["SGSHELL-CODE-XXXXX", "SGSHELL-CODE-YYYYY"],
"qty": 2,
"price": 150.00
}
}
}
Example — multiple shell types
"item": "50:2,100:1"
{
"status": "success",
"orderid": "192",
"total": 450.00,
"balance_after": 550.00,
"codes": {
"50Sgshell": { "codes": ["SGSHELL-XXXXX","SGSHELL-YYYYY"], "qty": 2, "price": 150.00 },
"100Sgshell": { "codes": ["SGSHELL-ZZZZZ"], "qty": 1, "price": 150.00 }
}
}
Shell Code Item Reference
| Item Code | Product | Region |
|---|---|---|
| 50:1 | 50Sgshell | Singapore |
| 100:1 | 100Sgshell | Singapore |
| 250:1 | 250Sgshell | Singapore |
| 320:1 | 320Sgshell | Singapore |
| 1000:1 | 1000Sgshell | Singapore |
| 33:1 | 33Indoshell | Indonesia |
| 66:1 | 66Indoshell | Indonesia |
| 165:1 | 165Indoshell | Indonesia |
| 330:1 | 330Indoshell | Indonesia |
| 65:1 | 65Myshell | Malaysia |
| 130:1 | 130Myshell | Malaysia |
| 260:1 | 260Myshell | Malaysia |
| 390:1 | 390Myshell | Malaysia |
| 650:1 | 650Myshell | Malaysia |
| 1300:1 | 1300Myshell | Malaysia |
| 2600:1 | 2600Myshell | Malaysia |
Direct Top-up
Top up a Free Fire player directly — UC diamonds via Unipin vouchers, or Garena Shell packages. Unlike /uc and /shell, this endpoint is async: it returns processing immediately and POSTs the full result to your url when done.
Body parameters
| Field | Type | Required |
|---|---|---|
| playerid | string | required |
| item | string | required |
| currency | string | required |
| credit | string | required |
| orderid | string | required |
| url | string | required |
Immediate response
{"status": "processing", "orderid": "191"}
If playerid has fewer than 5 digits, you get {"detail": "player_id must be 5+ digits"} (400). If the top-up service is down: {"detail": "UC topup is currently disabled"} or {"detail": "Shell topup is currently disabled"} (503).
UC Direct Top-up — Callback Formats
Example request
curl -X POST "http://api.hexabot.shop/tp?merchant=7024464702" \
-H "X-API-Key: fl_yourkey" \
-H "Content-Type: application/json" \
-d '{
"playerid": "12345678",
"item": "80:1",
"currency": "bdt",
"credit": "balance",
"orderid": "191",
"url": "https://yourcallback.com/result"
}'
Callback — success
{
"status": "success",
"orderid": "191",
"player_id": "12345678",
"player_name": "PlayerName",
"currency": "bdt",
"total": 50.00,
"balance_after": 950.00,
"due_after": 0.0,
"fail_reason": null,
"elapsed_sec": 35.2,
"timestamp": "2026-06-27T10:00:00+00:00",
"voucher_detail": {
"api_status": "success",
"items": [
{
"status": "success",
"code": "BDMB-J-S-03811638 5562-1363-6736-1546",
"product": "80UC",
"label": "115 ◆",
"unit_price": 50.00,
"fail_reason": ""
}
],
"summary": { "total": 1, "success": 1, "consumed": 0, "failed": 0 }
}
}
Callback — failed (voucher issue)
{
"status": "failed",
"orderid": "191",
"total": 0.0,
"balance_after": 1000.00,
"fail_reason": "Voucher top-up failed",
"voucher_detail": {
"api_status": "failed",
"items": [
{
"status": "failed",
"code": "HIDDEN",
"product": "80UC",
"label": "115 ◆",
"unit_price": 50.00,
"fail_reason": "Voucher top-up failed"
}
],
"summary": { "total": 1, "success": 0, "consumed": 0, "failed": 1 }
}
}
Callback — consumed voucher
When a voucher was already used, balance is still deducted and status is consumed.
{
"status": "failed",
"fail_reason": "Consumed Voucher",
"total": 50.00,
"balance_after": 950.00,
"voucher_detail": {
"items": [{ "status": "consumed", "fail_reason": "Consumed Voucher" }],
"summary": { "total": 1, "success": 0, "consumed": 1, "failed": 0 }
}
}
Callback — partial success
Some items succeeded, some failed. Check each items entry's status individually.
{
"status": "partial",
"orderid": "191",
"total": 100.00,
"balance_after": 900.00,
"voucher_detail": {
"api_status": "partial",
"items": [
{ "status": "success", "code": "BDMB-J-S-03811638...", "product": "80UC", "unit_price": 50.00 },
{ "status": "consumed", "code": "BDMB-J-S-03814108...", "product": "80UC", "fail_reason": "Consumed Voucher" },
{ "status": "failed", "code": "HIDDEN", "product": "80UC", "fail_reason": "Voucher top-up failed" }
],
"summary": { "total": 3, "success": 1, "consumed": 1, "failed": 1 }
}
}
Shell Direct Top-up — Callback Formats
Example request
curl -X POST "http://api.hexabot.shop/tp?merchant=7024464702" \
-H "X-API-Key: fl_yourkey" \
-H "Content-Type: application/json" \
-d '{
"playerid": "12345678",
"item": "lite:1",
"currency": "bdt",
"credit": "balance",
"orderid": "192",
"url": "https://yourcallback.com/result"
}'
Callback — success
{
"status": "success",
"orderid": "192",
"player_id": "12345678",
"player_name": "PlayerName",
"total": 150.00,
"balance_after": 850.00,
"shell_detail": {
"api_status": "success",
"label": "Weekly Lite",
"qty": 1,
"items": [
{ "component": "Weeklylite", "status": "success", "unit_price": 150.00 }
],
"summary": { "total": 1, "success": 1, "failed": 0 }
}
}
Callback — partial (e.g. full Level Up pass)
{
"status": "partial",
"orderid": "192",
"total": 75.00,
"balance_after": 925.00,
"fail_reason": "Shell top-up failed",
"shell_detail": {
"api_status": "partial",
"label": "Full Level Up Pass (6→30)",
"items": [
{ "component": "Levelup6", "status": "success", "unit_price": 25.00 },
{ "component": "Levelup10", "status": "success", "unit_price": 25.00 },
{ "component": "Levelup15", "status": "failed", "detail": "Shell top-up failed" },
{ "component": "Levelup20", "status": "failed", "detail": "Shell top-up failed" }
],
"summary": { "total": 4, "success": 2, "failed": 2 }
}
}
Callback component names
The component field identifies each sub-item in a shell order so you can parse results per piece.
| Component | Item |
|---|---|
| Weeklylite | Weekly Lite pass |
| Evo3 | 3-day Evo pass |
| Evo7 | 7-day Evo pass |
| Evo30 | 30-day Evo pass |
| Levelup6 | Level Up 6 |
| Levelup10 | Level Up 10 |
| Levelup15 | Level Up 15 |
| Levelup20 | Level Up 20 |
| Levelup25 | Level Up 25 |
| Levelup30 | Level Up 30 |
| Component | Item |
|---|---|
| 5Indodiamond | 5 Indo Diamond |
| 50Indodiamond | 50 Indo Diamond |
| 70Indodiamond | 70 Indo Diamond |
| 140Indodiamond | 140 Indo Diamond |
| 355Indodiamond | 355 Indo Diamond |
| 720Indodiamond | 720 Indo Diamond |
| 7290Indodiamond | 7290 Indo Diamond |
| IndoLvl6–30 | Indo Level Up passes |
Direct Top-up Item Reference
Use these in the item field for /tp only.
UC items
| Item Code | UC / Diamonds |
|---|---|
| 20:1 or 25:1 | 20UC / 25 ◆ |
| 36:1 or 50:1 | 36UC / 50 ◆ |
| 80:1 or 115:1 | 80UC / 115 ◆ |
| 160:1 or 240:1 | 160UC / 240 ◆ |
| 161:1 or weekly:1 | Weekly ◆ |
| 405:1 or 610:1 | 610 ◆ |
| 800:1 or monthly:1 | Monthly ◆ |
| 810:1 or 1240:1 | 1240 ◆ |
| 1625:1 or 2530:1 | 2530 ◆ |
Shell items
| Item Code | Product |
|---|---|
| lite:1 | Weekly Lite |
| evo3:1 / evo7:1 / evo30:1 | Evo passes |
| lvl6:1 → lvl30:1 | Level Up 6–30 |
| lvlall:1 | Full Level Up (6→30) |
| indo5:1 → indo7290:1 | Indo Diamonds |
| indoweekly:1 | Indo Weekly |
| indomonthly:1 | Indo Monthly |
| indobp:1 | Indo Booyah Pass |
| indolvl6:1 → indolvl30:1 | Indo Level Up |
Verify BDT Payment
Verify a mobile banking transaction (bKash, Nagad, Rocket, Upay). When verified, the amount is credited to your bot balance automatically — no manual approval needed. You can embed your merchant payment details in your platform so customers send money directly.
Body parameters
| Field | Type | Required |
|---|---|---|
| trxid | string | required |
Example
curl -X POST "http://api.hexabot.shop/verify?merchant=xxxxx" \
-H "X-API-Key: fl_yourkey" \
-H "Content-Type: application/json" \
-d '{"trxid": "ABC123456"}'
Response — success
{
"success": true,
"trxid": "ABC123456",
"gateway": "bkash",
"subtype": null,
"raw_amount": 500.00,
"fee_pct": 1.5,
"fee_deducted": 7.50,
"credited": 492.50,
"prev_balance": 1000.00,
"new_balance": 1492.50,
"currency": "BDT"
}
Error responses
| Response | Status | Meaning |
|---|---|---|
| {"detail": "Transaction already verified"} | 409 | Already credited before |
| {"detail": "Transaction ID not found"} | 404 | TRX not in database |
Verify USDT Payment
Verify a USDT transaction and credit your bot balance. Supports Binance Pay, TRC20, BEP20, and Polygon.
Body parameters
| Field | Type | Required |
|---|---|---|
| trxid | string | required |
trxid format by network:
• Binance Pay — numeric order ID
• BEP20 / Polygon — 0x + 64 hex characters
• TRC20 — 64 hex characters, no 0x
Example
curl -X POST "http://api.hexabot.shop/usdverify?merchant=7024464702" \
-H "X-API-Key: fl_yourkey" \
-H "Content-Type: application/json" \
-d '{"trxid": "a1b2c3d4e5f6..."}'
Response — success
{
"success": true,
"trxid": "123456789",
"network": "BinancePay",
"raw_amount": 10.00,
"fee_pct": 0.0,
"fee_deducted": 0.00,
"credited": 10.00,
"prev_balance": 50.00,
"new_balance": 60.00,
"from": "",
"pay_date": "2026-06-27T10:00:00+00:00",
"currency": "USDT"
}
Error responses
| Response | Status | Meaning |
|---|---|---|
| {"detail": "USDT not active for your account"} | 403 | Not signed up for USDT |
| {"detail": "Transaction already verified"} | 409 | Already credited |
| {"detail": "Unrecognised transaction ID format..."} | 400 | Wrong TRX ID format |
Check Shell Account Balance
Returns the current Garena shell balance for a given account.
Example
curl -X POST "https://api.hexabot.shop/shell?balance" \ -H "Authorization: your_api_key" \ -d "username=youruser&password=yourpass"
Response
{"username": "Hasina-Magi", "shells": "69"}
{"status": "failed", "reason": "Error text"}
Free Fire Likes — Direct Topup
Add likes directly to a Free Fire player's profile. Two packages are available: 100like (100 likes) and maxlike (200 likes). Both return the full result immediately.
Body parameters
| Field | Type | Required | Description |
|---|---|---|---|
| playerid | string | required | Free Fire player UID |
| package | string | required | 100like or maxlike |
| orderid | string | required | Your unique order reference |
Available packages
| Package | Likes Added | Description |
|---|---|---|
| 100like | 100 | Add 100 likes to player profile |
| maxlike | 200 | Add 200 likes to player profile (max) |
Package: 100like
Add 100 likes directly to any Free Fire player's profile.
Example request
curl -X POST "https://api.hexabot.shop/topup" \
-H "Authorization: your_api_key" \
-H "Content-Type: application/json" \
-d '{"playerid":"12345678","package":"100like","orderid":"YOUR_ORDER_ID"}'
Callback — success
{
"status": "success",
"orderid": "YOUR_ORDER_ID",
"actual_order_id": "L123",
"player_id": "12345678",
"player_name": "PlayerNickname",
"package": "100like",
"qty": 1,
"currency": "bdt",
"total": 10.0,
"likes_added": 100,
"likes_before": "1500",
"likes_after": "1600",
"balance_after": 90.0,
"due_after": 0.0,
"elapsed_sec": 4.32,
"timestamp": "2026-09-19T10:00:00+00:00"
}
Callback — failed
{
"status": "failed",
"orderid": "YOUR_ORDER_ID",
"actual_order_id": "L123",
"player_id": "12345678",
"player_name": "Unknown",
"package": "100like",
"qty": 1,
"currency": "bdt",
"total": 10.0,
"fail_reason": "Player not found or server issue",
"balance_after": 100.0,
"due_after": 0.0,
"elapsed_sec": 2.11,
"timestamp": "2026-09-19T10:00:00+00:00"
}
On failure, the charge is not deducted — balance_after equals your balance before the request. Always check status before fulfilling orders.
Package: maxlike
Add 200 likes (maximum) directly to any Free Fire player's profile.
Example request
curl -X POST "https://api.hexabot.shop/topup" \
-H "Authorization: your_api_key" \
-H "Content-Type: application/json" \
-d '{"playerid":"12345678","package":"maxlike","orderid":"YOUR_ORDER_ID"}'
Callback — success
{
"status": "success",
"orderid": "YOUR_ORDER_ID",
"actual_order_id": "L123",
"player_id": "12345678",
"player_name": "PlayerNickname",
"package": "maxlike",
"qty": 1,
"currency": "bdt",
"total": 10.0,
"likes_added": 200,
"likes_before": "1500",
"likes_after": "1700",
"balance_after": 90.0,
"due_after": 0.0,
"elapsed_sec": 4.32,
"timestamp": "2026-09-19T10:00:00+00:00"
}
Callback — failed
{
"status": "failed",
"orderid": "YOUR_ORDER_ID",
"actual_order_id": "L123",
"player_id": "12345678",
"player_name": "Unknown",
"package": "maxlike",
"qty": 1,
"currency": "bdt",
"total": 10.0,
"fail_reason": "Player not found or server issue",
"balance_after": 100.0,
"due_after": 0.0,
"elapsed_sec": 2.11,
"timestamp": "2026-09-19T10:00:00+00:00"
}
Response fields: likes_before and likes_after show the player's like count before and after the operation. elapsed_sec is the processing time in seconds.