API is a programming gateway that lets your site, bot or app order Arab Platform services automatically without entering the panel — so it creates orders, tracks their status and reads prices and balance, all within seconds and 24 hours a day.
services, add, status, balance, refill, cancel).
If you have a script SMM ready or a site connected to another panel, just put the link API and your key, and it will work right away without any code changes.| Link API | https://arb0.com/api/v2 |
|---|---|
| How to order | POST |
| Request format | application/x-www-form-urlencoded or JSON |
| Response format | JSON |
| Key API | from Account page (requires login) |
The interface is compatible with the panels format SMM standard (API v2), so it works with most ready-made reseller scripts.
services| Parameter | Description |
|---|---|
key | Key API |
action | services |
[
{
"service": "1",
"name": "رشق أعضاء تيليجرام",
"type": "Default",
"category": "تيليجرام",
"rate": "0.9000",
"min": "50",
"max": "10000",
"refill": false,
"cancel": false
}
]
add| Parameter | Description |
|---|---|
key | Key API |
action | add |
service | Number Service |
link | Link |
quantity | Quantity |
answer | Answer number (for voting services only) |
speed | optional — Speed in seconds: 0 or max = max speed, or 1 to 300 |
lang | optional — Accounts type (Represents the account system language): ar / en — see the types table |
gender | optional — 0 mixed, 1 Girls (female), 2 boys (male) |
message | for message services only — Message text (also accepts comments) |
server | optional — 1 Fake (fake) or 2 real (real) |
{
"order": 23501
}
status| Parameter | Description |
|---|---|
key | Key API |
action | status |
order | Order number |
{
"charge": "0.2782",
"start_count": "3572",
"status": "Partial",
"remains": "157",
"currency": "USD"
}
status (multi)| Parameter | Description |
|---|---|
key | Key API |
action | status |
orders | numbers Orders comma-separated (up to 100) |
{
"1": {"charge": "0.2782", "start_count": "3572", "status": "Partial", "remains": "157", "currency": "USD"},
"10": {"error": "Incorrect order ID"}
}
cancel| Parameter | Description |
|---|---|
key | Key API |
action | cancel |
orders | numbers Orders comma-separated (up to 100) |
[
{"order": 9, "cancel": 1},
{"order": 2, "cancel": {"error": "لا يمكن إيقاف هذا الطلب."}}
]
refill| Parameter | Description |
|---|---|
key | Key API |
action | refill |
order | Order number |
{
"refill": "1"
}
refill (multi)| Parameter | Description |
|---|---|
key | Key API |
action | refill |
orders | numbers Orders comma-separated (up to 100) |
[
{"order": 1, "refill": 1},
{"order": 3, "refill": {"error": "هذه الخدمة لا تدعم إعادة التعبئة."}}
]
refill_status| Parameter | Description |
|---|---|
key | Key API |
action | refill_status |
refill | Number Refill (or refills for several numbers) |
{
"status": "Completed"
}
balance| Parameter | Description |
|---|---|
key | Key API |
action | balance |
{
"balance": "100.8429",
"currency": "USD"
}
Each service defines the options it supports. Request action=services and for each service you'll find the field options with allowed and default values:
"options": {
"answer": {"required": true, "type": "integer"},
"speed": {"required": false, "default": 0, "min": 0, "max": 300, "unit": "seconds", "note": "0 = max speed"},
"lang": {"required": false, "default": "ar", "values": {"ar": "...", "en": "..."}},
"gender": {"required": false, "default": 0, "values": {"0": "mixed", "1": "female", "2": "male"}}
}
- If you don't send the option, the default value is used.
- If you send an invalid value the order is rejected with a clear error message, and no balance is deducted.
- Options the service doesn't support are ignored, so standard scripts work without changes.
| Value | Type | Explanation |
|---|---|---|
ar | Arab accounts (ar) | Arab accounts — account system language: Arabic |
en | Arab accounts (en) | Arab accounts — account system language: English |
curl -X POST https://arb0.com/api/v2 \ -d key=YOUR_KEY -d action=add -d service=20 \ -d link=https://t.me/channel/123 -d quantity=500 \ -d answer=2 -d lang=ar -d gender=1 -d speed=15
$post = ['key' => 'YOUR_KEY', 'action' => 'add', 'service' => 21,
'link' => 'https://t.me/group', 'quantity' => 100,
'message' => 'مرحبا بكم', 'server' => 2];
requests.post("https://arb0.com/api/v2", data={"key": "YOUR_KEY", "action": "add", "service": 22,
"link": "https://t.me/channel", "quantity": 1000, "gender": "male", "speed": "max"}).json()
All Service in action=services contains the field link which defines what it accepts:
"link": {"platform": "telegram", "input": "link", "access": "private", "kind": "post"}
| Field | Values |
|---|---|
platform | any any https link · telegram · youtube · tiktok · instagram · facebook · x · snapchat · whatsapp · threads · twitch · kick · discord · spotify · linkedin |
input | link link only · both link or username @name · user username only · any any text |
access (Telegram) | both · public General (t.me/name) · private private (starts with https://t.me/+) |
kind (Telegram) | "" any format · channel t.me/news · post t.me/news/55 · story t.me/news/s/12 · comment t.me/news/55?comment=7 |
# post in a private channel (access=private, kind=post) -d link=https://t.me/+xeED-wNL/8 # post in a public channel + topic (topic) -d link=https://t.me/news/55/77 # username (input=both or user) -d link=@my_channel # YouTube -d link=https://youtu.be/dQw4w9WgXcQ or https://www.youtube.com/shorts/abcDEF12345 # TikTok -d link=https://vm.tiktok.com/ZMabc123/ or https://www.tiktok.com/@user/video/7234567890123456789
answer# a value from action=choices (as is) -d answer=0 # first poll option (option bytes) -d answer=vote_ali # contest button (callback data) -d answer=👍 # reaction -d answer=1 # 🎲 random reactions (if options.answer.random = true)
{"error": "هذه الخدمة للقنوات الخاصة فقط — ضع رابط الدعوة الذي يبدأ بـ https://t.me/+"}
{"error": "ضع رابط المنشور مع رقم الرسالة، مثل https://t.me/news/55"}
{"error": "رقم الإجابة يحتوي على رموز غير مسموحة (مثل ' \" ; < > { } $ `)."}
{"error": "Request blocked: forbidden characters or code"} # HTTP 400
🔒 Any request containing code (HTML/JavaScript/SQL/system commands) is rejected automatically and logged. Send links and text as they are without extra encoding.
For services that require answer and have options.answer.choices in services: fetch the available choices from the post and show them to your customer, then send the value answer of the chosen option as is in action=add.
curl -X POST https://arb0.com/api/v2 -d key=YOUR_KEY -d action=choices -d service=20 -d link=https://t.me/channel/123
{"type": "poll", "title": "أفضل لاعب؟",
"choices": [{"label": "1. ميسي", "answer": "0"}, {"label": "2. رونالدو", "answer": "1"}]}
type: poll poll options · buttons contest buttons (forced subscription) · reactions channel reactions (premium ones use the emoji ID). Limit: 20 fetch requests per minute. Private channels are supported with the invite link (t.me/+…/رقم المنشور).
On error the response looks like: {"error": "رسالة الخطأ"}
Values status possible: Pending, Processing, In progress, Completed, Partial, Canceled.
Option error examples: Invalid speed: use 0 (max) or 1-300 seconds, Invalid lang: use one of ar, en, Invalid gender: use 0 (mixed), 1 (female) or 2 (male).
in services: Field cancel = The service supports stopping, andrefill = support refill. Refill statuses: Pending, In progress, Completed, Rejected.
Limit: 120 orders per minute per key.
Same URL and same key — your website or bot can sell verification numbers to your customers automatically: list services and countries, buy a number, receive the code, and cancel with a refund if no code arrives.
| action | Parameters | Function |
|---|---|---|
sms_services | — | All available numbers: id, service, country, country_iso, price, stock, price_tiers (whether it has several prices) |
sms_tiers | id | Price tiers for the same number (e.g. 0.25 / 0.30 / 0.55) with stock for each price |
sms_buy | id, tier (optional), max_price (optional) | Buy a number — the price is deducted from your balance and it returns order andphone |
sms_status | order | Number status and received codes (codes) and remaining time in seconds |
sms_cancel | order | Cancel with a full refund (only if no code arrived, and 2 minutes after purchase) |
sms_again | order | Request another code on the same number (for services that support it) |
sms_finish | order | Finish the order after receiving the code |
sms_orders | — | Your last 100 numbers |
statuswaiting Waiting for code · received Code received · finished Completed · cancelled / expired / failed = canceled and refunded automatically.
- Fetch the list with
sms_servicesand show it to your customers at your price (add your profit on top ofprice). - When the customer orders, send
sms_buywithidthe number, and give themphone. - Check
sms_statusevery 5 seconds untilcodesis not empty, then send the code to the customer. - If time runs out without a code, the number is canceled and refunded to your balance automatically — or cancel it yourself with
sms_cancel.
sms_buy{"order": 1542, "phone": "+6281234567890", "service": "Telegram", "country": "إندونيسيا",
"price": "0.33", "status": "waiting", "codes": [], "time_left": 1200, "can_cancel": true}
import requests, time
API, KEY = "https://arb0.com/api/v2", "YOUR_KEY"
nums = requests.post(API, data={"key": KEY, "action": "sms_services"}).json()
tg = [n for n in nums if n["service"] == "Telegram"][0]
o = requests.post(API, data={"key": KEY, "action": "sms_buy", "id": tg["id"]}).json()
print("Number:", o["phone"])
while True:
s = requests.post(API, data={"key": KEY, "action": "sms_status", "order": o["order"]}).json()
if s["codes"]:
print("Code:", s["codes"][-1]); break
if s["status"] not in ("waiting", "received"):
print("Refunded:", s["status"]); break
time.sleep(5)
$o = json_decode(file_get_contents("https://arb0.com/api/v2?" . http_build_query(
["key" => "YOUR_KEY", "action" => "sms_buy", "id" => "a15"])), true);
echo $o["phone"];
Possible errors: Insufficient balance / Numbers section is disabled / clear messages such as “No numbers available for this service right now”.
import requests
API = "https://arb0.com/api/v2"
KEY = "YOUR_API_KEY"
r = requests.post(API, data={
"key": KEY, "action": "add",
"service": 1, "link": "https://t.me/channel",
"quantity": 1000,
})
print(r.json()) # {"order": 23501}
$ch = curl_init("https://arb0.com/api/v2");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => http_build_query([
"key" => "YOUR_API_KEY",
"action" => "balance",
]),
]);
echo curl_exec($ch);