Developer Docs

API Documentation

Automated Free Fire UniPin & Garena Shell top-up API

Overview

Register an account and generate an API key from your dashboard to integrate automated top-up delivery directly into your own application, shop, or bot.

Base URL
https://mail.aurponff.com/api

Authentication

Every request must include your api_key as a field in the request (JSON body for POST, query string for GET). Your key is issued automatically when you register and is visible on your dashboard.

{
  "api_key": "AMz-XXXXXXXXXXXXXXXXXXXXXXXX",
  ...
}
Cost Per Successful Order
৳ 0.10

Every successfully processed order deducts the amount above from your wallet balance. If your balance is too low, /api/topup and /api/topup-instant return 402 Payment Required. Top up your wallet from the dashboard. /api/search is always free.

UniPin Voucher — Async

POST /api/topup

Redeems one or more UniPin voucher codes for a Free Fire player. Returns immediately with a "processing" status; the final result is POSTed to your url once it's ready. Send no package field — its absence is what tells the API this is a UniPin order.

Field Required Description
api_keyYesYour account's API key
orderidYesYour own unique order reference
playeridYesFree Fire player UID
codeYesVoucher serial/PIN(s), comma-separated for multiple
urlYesYour webhook URL for the final result
curl -X POST https://mail.aurponff.com/api/topup \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "AMz-XXXXXXXXXXXXXXXXXXXXXXXX",
    "orderid": "order-001",
    "playerid": "123456789",
    "code": "BDMB-T-S-01234567 1234-5678-9012-3456",
    "url": "https://your-webhook.com/callback"
  }'
Immediate Response
200 OK
{ "status": "processing" }
Webhook Callback
{
  "status": "success",
  "orderid": "order-001",
  "nickname": "PlayerName",
  "content": {
    "batch": [
      { "uc": "BDMB-T-S-01234567 1234-5678-9012-3456", "ok": true, "detail": "Success" }
    ]
  }
}

UniPin Voucher — Instant

POST /api/topup-instant

Same as UniPin Async above, but synchronous — the final result comes back directly in this HTTP response. Do not send a url field, and don't send package — its absence marks this as a UniPin order.

curl -X POST https://mail.aurponff.com/api/topup-instant \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "AMz-XXXXXXXXXXXXXXXXXXXXXXXX",
    "orderid": "order-002",
    "playerid": "123456789",
    "code": "BDMB-T-S-01234567:1234-5678-9012-3456"
  }'
Response
{
  "status": "success",
  "orderid": "order-002",
  "content": {
    "batch": [
      { "uc": "BDMB-T-S-01234567:1234-5678-9012-3456", "ok": true, "detail": "Success" }
    ]
  },
  "nickname": "PlayerName"
}

Garena Shell — Async

POST /api/topup

Purchases a Garena Shell package for a Free Fire player. Returns immediately with a "processing" status; the final result is POSTed to your url once it's ready. Sending a package field is what tells the API this is a Shell order.

Field Required Description
api_keyYesYour account's API key
orderidYesYour own unique order reference
playeridYesFree Fire player UID
codeYesShop code — see region table below
packageYesPackage alias — see region table below
usernameYesGarena account username
passwordYesGarena account password
autocodeNoOTP/secret key, if required
qtyNoQuantity (default 1)
urlYesYour webhook URL for the final result
curl -X POST https://mail.aurponff.com/api/topup \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "AMz-XXXXXXXXXXXXXXXXXXXXXXXX",
    "orderid": "shell-001",
    "playerid": "123456789",
    "code": "shell",
    "package": "lvl6",
    "username": "garena_username",
    "password": "garena_password",
    "url": "https://your-webhook.com/callback"
  }'

Garena Shell — Instant

POST /api/topup-instant

Same as Shell Async above, but synchronous — the final result comes back directly in this HTTP response. Do not send a url field. If the provider is busy you'll get a 503 — fall back to /api/topup in that case.

curl -X POST https://mail.aurponff.com/api/topup-instant \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "AMz-XXXXXXXXXXXXXXXXXXXXXXXX",
    "orderid": "shell-002",
    "playerid": "123456789",
    "code": "shell",
    "package": "lvl6",
    "username": "garena_username",
    "password": "garena_password"
  }'
Success
{
  "status": "success",
  "orderid": "shell-002",
  "content": {
    "batch": [
      { "package": "LVL6", "ok": true, "detail": "Success" }
    ]
  },
  "nickname": "PlayerName"
}
Server Busy (503)
{
  "error": "Server busy — use /api/topup instead.",
  "code": "SERVER_BUSY"
}

Shell Region & Package Codes

BD Server — code: shell

lite, weekly, monthly, fulllevelup, lvl6, lvl10, lvl15, lvl20, lvl25, lvl30, 115, 240, 610, 1240, 2530

SG Server — code: sgshell

lite, weekly, monthly, fulllevelup, lvl6, lvl10, lvl15, lvl20, lvl25, lvl30, 25, 100, 310, 520, 1060, 2180, 5600, 11500

MY Server — code: myshell

lite, weekly, monthly, fulllevelup, lvl6, lvl10, lvl15, lvl20, lvl25, lvl30, 25, 100, 310, 520, 1060, 2180, 5600, 11500, 115, 240, 610, 1240, 2530

Indonesia Server — code: indoshell

weekly, monthly, bp, lite, fulllevelup, lvl6, lvl10, lvl15, lvl20, lvl25, lvl30, 5, 50, 70, 140, 355, 720, 7290, 36500, 73100, 115, 240, 610, 1240, 2530

Response Values

Detail Meaning
Consumed VoucherVoucher was already used
Uid is invalidThe provided Player ID doesn't exist
Invalid PINThe voucher serial/PIN is incorrect
Wrong OTPGarena account OTP/autocode was rejected

A batch can also return an overall success, failed, or partial status — check each item's ok field individually when it's partial.