UpBot Docs
POST/topup-instant

Auto TopUp API

Create Free Fire top-up orders through a secure JSON endpoint with duplicate-order protection and controlled retries.

BASE URL https://api.upbot.top

Overview

Send one top-up order per JSON request. Only newly accepted top-up orders consume token quota.

orderid is your idempotency key. Reusing it returns or continues the existing order instead of creating a second delivery.

Authentication

Use your UpBot token as a Bearer token. Keep it only on your server.

HTTP headers
Authorization: Bearer UPBOT_YOUR_TOKEN
Content-Type: application/json

Request fields

FIELDTYPEREQUIREDDESCRIPTION
orderidstringYESYour unique order reference.
playeridstringYESCustomer Free Fire UID.
codestringYESConfigured voucher or product code.
package, qtystring / integerSHELLPackage and quantity for a configured Shell route.
username, password, autocodestringSHELLShell account fields when required by your integration.
For standard UniPin requests, send only orderid, playerid and code.

Code examples

cURL

Shell
curl -X POST "https://api.upbot.top/topup-instant" 
  -H "Authorization: Bearer UPBOT_YOUR_TOKEN" 
  -H "Content-Type: application/json" 
  -d '{"orderid":"SHOP-10001","playerid":"2444465764","code":"BDMB-Q-S-12345678"}'

PHP

PHP 8+
<?php
$data=['orderid'=>'SHOP-10001','playerid'=>'2444465764','code'=>'BDMB-Q-S-12345678'];
$ch=curl_init('https://api.upbot.top/topup-instant');
curl_setopt_array($ch,[CURLOPT_POST=>true,CURLOPT_RETURNTRANSFER=>true,CURLOPT_HTTPHEADER=>['Authorization: Bearer UPBOT_YOUR_TOKEN','Content-Type: application/json'],CURLOPT_POSTFIELDS=>json_encode($data),CURLOPT_TIMEOUT=>30]);
$result=json_decode(curl_exec($ch),true);
curl_close($ch);

JavaScript (server-side)

Node.js
const response=await fetch('https://api.upbot.top/topup-instant',{
  method:'POST',
  headers:{Authorization:'Bearer UPBOT_YOUR_TOKEN','Content-Type':'application/json'},
  body:JSON.stringify({orderid:'SHOP-10001',playerid:'2444465764',code:'BDMB-Q-S-12345678'})
});
const result=await response.json();

Responses

Successful response

200 OK · representative
{"status":"success","orderid":"SHOP-10001","message":"Top-up completed","nickname":"Player Name"}

Provider-specific fields may vary. Read the HTTP code and status first.

Processing response

202 Accepted
{"status":"processing","code":"TEMPORARY_ERROR","message":"Provider is temporarily busy. This order is queued for automatic retry.","orderid":"SHOP-10001","provider_http":503,"retry_after":1}
Wait at least retry_after seconds, then send the same data with the same orderid.

HTTP status codes

200Final response

A final provider response was returned.

202Processing

Order is queued or still running.

401Unauthorized

Token is missing or invalid.

403Forbidden

Token is disabled, expired or over quota.

422Validation error

A required field is missing.

503Unavailable

The selected service is disabled.

NEXT DOCUMENTPlayer Information APIGET /getinfo →