Free Fire
Diamond top-up services for Free Fire.
1. Get Plansโ
Get available Free Fire diamond packages.
Endpoint: GET /api/freefire/plans
Response:
{
"status": "success",
"message": "Plans retrieved",
"data": [
{
"plan_id": "FF100",
"plan_name": "100 Diamonds",
"price": 1000.00
},
{
"plan_id": "FF500",
"plan_name": "500 Diamonds",
"price": 4500.00
}
]
}
Code Examplesโ
- cURL
- JavaScript
- Python
- PHP
- Node.js
curl -X GET "https://gateway.wasmou.net/api/freefire/plans" \
-H "X-Api-Key: your_api_key_here"
async function getFreeFirePlans() {
const response = await fetch('https://gateway.wasmou.net/api/freefire/plans', {
method: 'GET',
headers: {
'X-Api-Key': 'your_api_key_here'
}
});
const data = await response.json();
console.log(data);
}
getFreeFirePlans();
import requests
def get_freefire_plans():
url = "https://gateway.wasmou.net/api/freefire/plans"
headers = {
"X-Api-Key": "your_api_key_here"
}
response = requests.get(url, headers=headers)
data = response.json()
print(data)
return data
get_freefire_plans()
<?php
function getFreeFirePlans() {
$url = "https://gateway.wasmou.net/api/freefire/plans";
$apiKey = "your_api_key_here";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Api-Key: " . $apiKey
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
return $data;
}
getFreeFirePlans();
?>
const https = require('https');
function getFreeFirePlans() {
const options = {
hostname: 'gateway.wasmou.net',
path: '/api/freefire/plans',
method: 'GET',
headers: {
'X-Api-Key': 'your_api_key_here'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
console.log(JSON.parse(data));
});
});
req.on('error', (error) => {
console.error(error);
});
req.end();
}
getFreeFirePlans();
2. Check Playerโ
Verify a player ID before placing an order. Required before placing an order.
Endpoint: POST /api/freefire/check-player
Request:
Parameters:
player_id(string, required): The Free Fire player ID to verify
{
"player_id": "1234567890"
}
Response:
{
"status": "success",
"player_name": "PlayerName123",
"region": "NA"
}
Code Examplesโ
- cURL
- JavaScript
- Python
- PHP
- Node.js
curl -X POST "https://gateway.wasmou.net/api/freefire/check-player" \
-H "X-Api-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"player_id": "1234567890"}'
async function checkPlayer(playerId) {
const response = await fetch('https://gateway.wasmou.net/api/freefire/check-player', {
method: 'POST',
headers: {
'X-Api-Key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
player_id: playerId
})
});
const data = await response.json();
console.log(data);
}
checkPlayer('1234567890');
import requests
def check_player(player_id):
url = "https://gateway.wasmou.net/api/freefire/check-player"
headers = {
"X-Api-Key": "your_api_key_here",
"Content-Type": "application/json"
}
data = {
"player_id": player_id
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
print(result)
return result
check_player("1234567890")
<?php
function checkPlayer($playerId) {
$url = "https://gateway.wasmou.net/api/freefire/check-player";
$apiKey = "your_api_key_here";
$data = json_encode([
"player_id" => $playerId
]);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Api-Key: " . $apiKey,
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result);
return $result;
}
checkPlayer("1234567890");
?>
const https = require('https');
function checkPlayer(playerId) {
const data = JSON.stringify({
player_id: playerId
});
const options = {
hostname: 'gateway.wasmou.net',
path: '/api/freefire/check-player',
method: 'POST',
headers: {
'X-Api-Key': 'your_api_key_here',
'Content-Type': 'application/json',
'Content-Length': data.length
}
};
const req = https.request(options, (res) => {
let responseData = '';
res.on('data', (chunk) => {
responseData += chunk;
});
res.on('end', () => {
console.log(JSON.parse(responseData));
});
});
req.on('error', (error) => {
console.error(error);
});
req.write(data);
req.end();
}
checkPlayer('1234567890');
3. Place Orderโ
Purchase diamonds for a player.
โ ๏ธ Important: You MUST validate the player ID using the "Check Player" endpoint (section 2) before placing an order. Orders will be rejected if the player ID is invalid or cannot be verified.
Endpoint: POST /api/freefire/order
Request:
Parameters:
plan_id(string, required): The plan ID from the plans endpointplayer_id(string, required): The Free Fire player ID (must be validated first using Check Player endpoint)
{
"plan_id": "FF100",
"player_id": "1234567890"
}
Response:
Success Response:
{
"status": "success",
"message": "Order placed successfully",
"data": {
"trx_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "pending"
}
}
Error Response (Invalid Player ID):
{
"status": "error",
"message": "Invalid player ID. Please verify your player ID and try again.",
"data": null
}
Error Response (Player Validation Failed):
{
"status": "error",
"message": "Unable to retrieve player information. Please verify your player ID and try again.",
"data": null
}
Important:
- Save the
trx_idto check order status later - If the order fails with an error about invalid player ID, use the "Check Player" endpoint first to verify the player ID is valid
Code Examplesโ
- cURL
- JavaScript
- Python
- PHP
- Node.js
curl -X POST "https://gateway.wasmou.net/api/freefire/order" \
-H "X-Api-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"plan_id": "FF100", "player_id": "1234567890"}'
async function placeOrder(planId, playerId) {
const response = await fetch('https://gateway.wasmou.net/api/freefire/order', {
method: 'POST',
headers: {
'X-Api-Key': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
plan_id: planId,
player_id: playerId
})
});
const data = await response.json();
console.log(data);
return data;
}
placeOrder('FF100', '1234567890');
import requests
def place_order(plan_id, player_id):
url = "https://gateway.wasmou.net/api/freefire/order"
headers = {
"X-Api-Key": "your_api_key_here",
"Content-Type": "application/json"
}
data = {
"plan_id": plan_id,
"player_id": player_id
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
print(result)
return result
place_order("FF100", "1234567890")
<?php
function placeOrder($planId, $playerId) {
$url = "https://gateway.wasmou.net/api/freefire/order";
$apiKey = "your_api_key_here";
$data = json_encode([
"plan_id" => $planId,
"player_id" => $playerId
]);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Api-Key: " . $apiKey,
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result);
return $result;
}
placeOrder("FF100", "1234567890");
?>
const https = require('https');
function placeOrder(planId, playerId) {
const data = JSON.stringify({
plan_id: planId,
player_id: playerId
});
const options = {
hostname: 'gateway.wasmou.net',
path: '/api/freefire/order',
method: 'POST',
headers: {
'X-Api-Key': 'your_api_key_here',
'Content-Type': 'application/json',
'Content-Length': data.length
}
};
const req = https.request(options, (res) => {
let responseData = '';
res.on('data', (chunk) => {
responseData += chunk;
});
res.on('end', () => {
const result = JSON.parse(responseData);
console.log(result);
return result;
});
});
req.on('error', (error) => {
console.error(error);
});
req.write(data);
req.end();
}
placeOrder('FF100', '1234567890');
4. Check Order Statusโ
Check the status of a placed order.
Endpoint: GET /api/freefire/status/{trxId}
Response:
{
"status": "success",
"message": "Order status retrieved",
"data": {
"trx_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "success",
"plan_name": "100 Diamonds",
"player_id": "1234567890",
"amount": 1000.00,
"created_at": "2024-01-15T10:30:00.000000Z"
}
}
Status Values: pending, success, failed
Code Examplesโ
- cURL
- JavaScript
- Python
- PHP
- Node.js
curl -X GET "https://gateway.wasmou.net/api/freefire/status/550e8400-e29b-41d4-a716-446655440000" \
-H "X-Api-Key: your_api_key_here"
async function checkOrderStatus(trxId) {
const response = await fetch(`https://gateway.wasmou.net/api/freefire/status/${trxId}`, {
method: 'GET',
headers: {
'X-Api-Key': 'your_api_key_here'
}
});
const data = await response.json();
console.log(data);
return data;
}
checkOrderStatus('550e8400-e29b-41d4-a716-446655440000');
import requests
def check_order_status(trx_id):
url = f"https://gateway.wasmou.net/api/freefire/status/{trx_id}"
headers = {
"X-Api-Key": "your_api_key_here"
}
response = requests.get(url, headers=headers)
result = response.json()
print(result)
return result
check_order_status("550e8400-e29b-41d4-a716-446655440000")
<?php
function checkOrderStatus($trxId) {
$url = "https://gateway.wasmou.net/api/freefire/status/" . $trxId;
$apiKey = "your_api_key_here";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Api-Key: " . $apiKey
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result);
return $result;
}
checkOrderStatus("550e8400-e29b-41d4-a716-446655440000");
?>
const https = require('https');
function checkOrderStatus(trxId) {
const options = {
hostname: 'gateway.wasmou.net',
path: `/api/freefire/status/${trxId}`,
method: 'GET',
headers: {
'X-Api-Key': 'your_api_key_here'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
console.log(JSON.parse(data));
});
});
req.on('error', (error) => {
console.error(error);
});
req.end();
}
checkOrderStatus('550e8400-e29b-41d4-a716-446655440000');
Complete Workflow Exampleโ
- JavaScript
- Python
- PHP
async function completeFreeFireWorkflow() {
const API_KEY = 'your_api_key_here';
const BASE_URL = 'https://gateway.wasmou.net';
// 1. Get plans
const plansResponse = await fetch(`${BASE_URL}/api/freefire/plans`, {
headers: { 'X-Api-Key': API_KEY }
});
const plans = await plansResponse.json();
console.log('Available plans:', plans);
// 2. Check player
const playerId = '1234567890';
const checkResponse = await fetch(`${BASE_URL}/api/freefire/check-player`, {
method: 'POST',
headers: {
'X-Api-Key': API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({ player_id: playerId })
});
const playerInfo = await checkResponse.json();
console.log('Player info:', playerInfo);
// 3. Place order
const orderResponse = await fetch(`${BASE_URL}/api/freefire/order`, {
method: 'POST',
headers: {
'X-Api-Key': API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({
plan_id: 'FF100',
player_id: playerId
})
});
const order = await orderResponse.json();
console.log('Order placed:', order);
const trxId = order.data.trx_id;
// 4. Check status (poll every 5 seconds)
const checkStatus = async () => {
const statusResponse = await fetch(`${BASE_URL}/api/freefire/status/${trxId}`, {
headers: { 'X-Api-Key': API_KEY }
});
const status = await statusResponse.json();
console.log('Order status:', status);
if (status.data.status === 'pending') {
setTimeout(checkStatus, 5000); // Poll again in 5 seconds
}
};
checkStatus();
}
completeFreeFireWorkflow();
import requests
import time
def complete_freefire_workflow():
API_KEY = "your_api_key_here"
BASE_URL = "https://gateway.wasmou.net"
# 1. Get plans
plans_response = requests.get(
f"{BASE_URL}/api/freefire/plans",
headers={"X-Api-Key": API_KEY}
)
plans = plans_response.json()
print("Available plans:", plans)
# 2. Check player
player_id = "1234567890"
check_response = requests.post(
f"{BASE_URL}/api/freefire/check-player",
headers={
"X-Api-Key": API_KEY,
"Content-Type": "application/json"
},
json={"player_id": player_id}
)
player_info = check_response.json()
print("Player info:", player_info)
# 3. Place order
order_response = requests.post(
f"{BASE_URL}/api/freefire/order",
headers={
"X-Api-Key": API_KEY,
"Content-Type": "application/json"
},
json={
"plan_id": "FF100",
"player_id": player_id
}
)
order = order_response.json()
print("Order placed:", order)
trx_id = order["data"]["trx_id"]
# 4. Check status (poll every 5 seconds)
while True:
status_response = requests.get(
f"{BASE_URL}/api/freefire/status/{trx_id}",
headers={"X-Api-Key": API_KEY}
)
status = status_response.json()
print("Order status:", status)
if status["data"]["status"] != "pending":
break
time.sleep(5) # Wait 5 seconds before next check
if __name__ == "__main__":
complete_freefire_workflow()
<?php
function completeFreeFireWorkflow() {
$apiKey = "your_api_key_here";
$baseUrl = "https://gateway.wasmou.net";
// 1. Get plans
$ch = curl_init($baseUrl . "/api/freefire/plans");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-Api-Key: " . $apiKey]);
$plansResponse = curl_exec($ch);
curl_close($ch);
$plans = json_decode($plansResponse, true);
print_r($plans);
// 2. Check player
$playerId = "1234567890";
$checkData = json_encode(["player_id" => $playerId]);
$ch = curl_init($baseUrl . "/api/freefire/check-player");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $checkData);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Api-Key: " . $apiKey,
"Content-Type: application/json"
]);
$checkResponse = curl_exec($ch);
curl_close($ch);
$playerInfo = json_decode($checkResponse, true);
print_r($playerInfo);
// 3. Place order
$orderData = json_encode([
"plan_id" => "FF100",
"player_id" => $playerId
]);
$ch = curl_init($baseUrl . "/api/freefire/order");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $orderData);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-Api-Key: " . $apiKey,
"Content-Type: application/json"
]);
$orderResponse = curl_exec($ch);
curl_close($ch);
$order = json_decode($orderResponse, true);
print_r($order);
$trxId = $order["data"]["trx_id"];
// 4. Check status (poll every 5 seconds)
do {
$ch = curl_init($baseUrl . "/api/freefire/status/" . $trxId);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-Api-Key: " . $apiKey]);
$statusResponse = curl_exec($ch);
curl_close($ch);
$status = json_decode($statusResponse, true);
print_r($status);
if ($status["data"]["status"] !== "pending") {
break;
}
sleep(5); // Wait 5 seconds
} while (true);
}
completeFreeFireWorkflow();
?>
Best Practicesโ
- REQUIRED: Always validate player ID using check-player endpoint before ordering. Orders will fail if player ID is not validated first
- Save the
trx_idfrom order response - Poll status endpoint every 5-10 seconds until status is final
- Stop polling when status is
successorfailed - Handle errors gracefully and implement retry logic for network issues
- If order fails with "Invalid player ID" error, validate the player ID again using check-player endpoint
Try It Liveโ
Test Free Fire endpoints directly in your browser using our Live Testing tool.