REST API v1.0

Developer Documentation

Integrate high-speed automated Free Fire top-ups into your bot, website, or desktop application.

Get Your API Key

Overview

The Seniya Topup Developer API allows you to automate Free Fire diamond top-ups, weekly/monthly subscriptions, EVO passes, and level up passes using your own Garena Shells account.

By saving your Garena Shells account credentials in your dashboard once, you can execute top-up requests from any server or platform with only your Seniya API token.

Authentication

All protected endpoints require your developer API key. You can authenticate by sending the token in the Authorization header, via the query parameter, or in the JSON payload:

Method Format Example
HTTP Header (Recommended) Authorization: Bearer <token> Authorization: Bearer SHELLAPI-XXXXXXXXXXXXXXXXXXXXXXXX
Query String ?token=<token> https://ff-api.seniyatopup.com.lk/api/v1/topup-sync?token=SHELLAPI-XXXXXXXXXXXXXXXXXXXXXXXX
JSON Body "token": "<token>" {"token": "SHELLAPI-XXXXXXXXXXXXXXXXXXXXXXXX", "playerid": "..."}

Base URL & Region

All production API calls should be directed to our high-availability API gateway:

https://ff-api.seniyatopup.com.lk/api/v1

Region supported: Singapore Server (Code: lkshell or lksgshell). Compatible with MY Shell accounts top-up into SG Gamer UIDs.

POST

/api/v1/topup-sync

Direct synchronous top-up. The server completes the Garena Shell deduction and Free Fire diamond delivery in real-time and returns the transaction ID and shell balances in the immediate response (< 2s).

Request Parameters (JSON Body)

Field Type Required Description
playerid string Required Free Fire Gamer UID (e.g. 2378357572).
package string Required Package code (e.g. 25, 100, WEEKLY, or comma-separated combo 25,100).
orderid string Optional Unique order reference ID in your system. Auto-generated if omitted.
code string Optional Server type: lkshell (default) or lksgshell.
cURL
curl -X POST https://ff-api.seniyatopup.com.lk/api/v1/topup-sync \
  -H "Authorization: Bearer SHELLAPI-XXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{
    "orderid": "ORD-2026-001",
    "playerid": "2378357572",
    "code": "lkshell",
    "package": "100"
  }'
PHP (cURL)
<?php
$payload = [
    'orderid' => 'ORD-' . time(),
    'playerid' => '2378357572',
    'code' => 'lkshell',
    'package' => '100'
];

$ch = curl_init('https://ff-api.seniyatopup.com.lk/api/v1/topup-sync');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer SHELLAPI-XXXXXXXXXXXXXXXXXXXXXXXX',
    'Content-Type: application/json'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$data = json_decode($response, true);
if ($httpCode === 200 && ($data['status'] ?? '') === 'success') {
    echo "Top-Up Success! Trx ID: " . $data['trx_id'] . "\n";
} else {
    echo "Failed: " . ($data['error'] ?? 'Unknown error') . "\n";
}
?>
Node.js (fetch)
const response = await fetch('https://ff-api.seniyatopup.com.lk/api/v1/topup-sync', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer SHELLAPI-XXXXXXXXXXXXXXXXXXXXXXXX',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    orderid: 'ORD-' + Date.now(),
    playerid: '2378357572',
    code: 'lkshell',
    package: '100'
  })
});

const data = await response.json();
console.log(data);
Python (requests)
import requests

url = "https://ff-api.seniyatopup.com.lk/api/v1/topup-sync"
headers = {
    "Authorization": "Bearer SHELLAPI-XXXXXXXXXXXXXXXXXXXXXXXX",
    "Content-Type": "application/json"
}
payload = {
    "orderid": "ORD-2026-001",
    "playerid": "2378357572",
    "code": "lkshell",
    "package": "100"
}

response = requests.post(url, json=payload, headers=headers)
data = response.json()
print(data)

Successful Response Example (Single Item):

{
  "status": "success",
  "orderid": "ORD-2026-001",
  "playerid": "2378357572",
  "nickname": "ZxㅤMINZO亗",
  "package": "100",
  "trx_id": "149422587379225395",
  "pre_balance": 5000,
  "post_balance": 4910,
  "balance_used": 90
}
POST

/api/v1/player-lookup

Check gamer UID validity and retrieve in-game nickname before making top-up orders.

Request Example
curl -X POST https://ff-api.seniyatopup.com.lk/api/v1/player-lookup \
  -H "Authorization: Bearer SHELLAPI-XXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{"playerid": "2378357572"}'

// Response (HTTP 200):
{
  "status": "success",
  "player_id": "2378357572",
  "nickname": "ZxㅤMINZO亗",
  "region": "SG/Universal"
}
GET

/api/v1/status

Check your developer account health, subscription validity, remaining days, and total orders placed.

curl "https://ff-api.seniyatopup.com.lk/api/v1/status" \
  -H "Authorization: Bearer SHELLAPI-XXXXXXXXXXXXXXXXXXXXXXXX"

// Response (HTTP 200):
{
  "status": "success",
  "data": {
    "username": "seniya_bot_user",
    "account_status": "active",
    "garena_shells_configured": true,
    "subscription": {
      "is_active": true,
      "plan_name": "Starter Developer",
      "expiry_date": "2026-11-15 12:00:00",
      "days_left": 30,
      "hours_left": 14
    },
    "orders": {
      "total": 352,
      "success": 349,
      "failed": 3
    }
  }
}

Supported Package Codes

Pass any of the following values in the package field:

Code Item Name Category
25 25 Diamond Diamonds
100 100 Diamond Diamonds
310 310 Diamond Diamonds
520 520 Diamond Diamonds
1060 1060 Diamond Diamonds
2180 2180 Diamond Diamonds
5600 5600 Diamond Diamonds
11500 11500 Diamond Diamonds
LITE Weekly Lite Pack Subscriptions
WEEKLY Weekly Subscription Subscriptions
MONTHLY Monthly Subscription Subscriptions
3D EVO 3 Days EVO
7D EVO 7 Days EVO
30D EVO 30 Days EVO
lvl6 Level Up 6 (L6) Level Up
lvl10 Level Up 10 (L10) Level Up
lvl15 Level Up 15 (L15) Level Up
lvl20 Level Up 20 (L20) Level Up
lvl25 Level Up 25 (L25) Level Up
lvl30 Level Up 30 (L30) Level Up

Error Codes & Handling

HTTP Code Message / Error Resolution
401 Missing or Invalid API Token Verify the Authorization Bearer header contains an active API key.
402 Subscription Expired / Inactive Renew your subscription plan in the dashboard via eZ Cash or Bank Transfer.
400 Garena Shells credentials not found Connect your Garena username, password, and autocode in your dashboard.
400 Shell balance is low Your connected Garena account is out of shells. Top up your Garena Shell balance.
409 Duplicate order ID detected An order with this orderid was already submitted. Use a new unique ID.
WhatsApp Support