API est une passerelle de programmation qui permet à votre site, bot ou application de commander les services d'Arab Platform automatiquement sans entrer dans le panneau — il crée les commandes, suit leur statut et lit les prix et le solde, en quelques secondes et 24h/24.
services, add, status, balance, refill, cancel).
Si vous avez un script SMM prêt ou un site connecté à un autre panneau, mettez simplement le lien API et votre clé, et cela fonctionnera immédiatement sans modifier le code.| Lien API | https://arb0.com/api/v2 |
|---|---|
| Comment commander | POST |
| Format d'envoi | application/x-www-form-urlencoded ou JSON |
| Format de réponse | JSON |
| Clé API | à partir de Page du compte (connexion requise) |
L'interface est compatible avec le format des panneaux SMM standard (API v2), il fonctionne donc avec la plupart des scripts revendeurs prêts à l'emploi.
services| Paramètre | Description |
|---|---|
key | Clé API |
action | services |
[
{
"service": "1",
"name": "رشق أعضاء تيليجرام",
"type": "Default",
"category": "تيليجرام",
"rate": "0.9000",
"min": "50",
"max": "10000",
"refill": false,
"cancel": false
}
]
add| Paramètre | Description |
|---|---|
key | Clé API |
action | add |
service | Numéro Service |
link | Lien |
quantity | Quantité |
answer | Numéro de réponse (pour les services de vote uniquement) |
speed | facultatif — Vitesse en secondes: 0 ou max = vitesse max, ou 1 à 300 |
lang | facultatif — Type de comptes (Représente la langue du compte): ar / en — voir le tableau des types |
gender | facultatif — 0 mixte, 1 Filles (female), 2 garçons (male) |
message | pour les services de messages uniquement — Texte du message (accepte aussi comments) |
server | facultatif — 1 Faux (fake) ou 2 réels (real) |
{
"order": 23501
}
status| Paramètre | Description |
|---|---|
key | Clé API |
action | status |
order | Numéro de commande |
{
"charge": "0.2782",
"start_count": "3572",
"status": "Partial",
"remains": "157",
"currency": "USD"
}
status (multi)| Paramètre | Description |
|---|---|
key | Clé API |
action | status |
orders | numéros Commandes séparés par des virgules (jusqu'à 100) |
{
"1": {"charge": "0.2782", "start_count": "3572", "status": "Partial", "remains": "157", "currency": "USD"},
"10": {"error": "Incorrect order ID"}
}
cancel| Paramètre | Description |
|---|---|
key | Clé API |
action | cancel |
orders | numéros Commandes séparés par des virgules (jusqu'à 100) |
[
{"order": 9, "cancel": 1},
{"order": 2, "cancel": {"error": "لا يمكن إيقاف هذا الطلب."}}
]
refill| Paramètre | Description |
|---|---|
key | Clé API |
action | refill |
order | Numéro de commande |
{
"refill": "1"
}
refill (multi)| Paramètre | Description |
|---|---|
key | Clé API |
action | refill |
orders | numéros Commandes séparés par des virgules (jusqu'à 100) |
[
{"order": 1, "refill": 1},
{"order": 3, "refill": {"error": "هذه الخدمة لا تدعم إعادة التعبئة."}}
]
refill_status| Paramètre | Description |
|---|---|
key | Clé API |
action | refill_status |
refill | Numéro Recharge (ou refills pour plusieurs numéros) |
{
"status": "Completed"
}
balance| Paramètre | Description |
|---|---|
key | Clé API |
action | balance |
{
"balance": "100.8429",
"currency": "USD"
}
Chaque service définit les options qu'il prend en charge. Demandez action=services et pour chaque service vous trouverez le champ options avec les valeurs autorisées et par défaut:
"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"}}
}
- Si vous n'envoyez pas l'option, la valeur par défaut est utilisée.
- Si vous envoyez une valeur invalide, la commande est refusée avec un message d'erreur clair, et aucun solde n'est déduit.
- Les options non prises en charge sont ignorées, donc les scripts standards fonctionnent sans modification.
| Valeur | Type | Explication |
|---|---|---|
ar | Comptes arabes (ar) | Comptes arabes — langue du compte : arabe |
en | Comptes arabes (en) | Comptes arabes — langue du compte : anglais |
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()
Tous les Service dans action=services contient le champ link qui définit ce qu'il accepte :
"link": {"platform": "telegram", "input": "link", "access": "private", "kind": "post"}
| Champ | Valeurs |
|---|---|
platform | any tout lien https · telegram · youtube · tiktok · instagram · facebook · x · snapchat · whatsapp · threads · twitch · kick · discord · spotify · linkedin |
input | link lien uniquement · both lien ou nom d'utilisateur @name · user nom d'utilisateur uniquement · any n'importe quel texte |
access (Telegram) | both · public Général (t.me/name) · private privé (commence par https://t.me/+) |
kind (Telegram) | "" tout 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
🔒 Toute requête contenant du code (HTML/JavaScript/SQL/commandes système) est rejetée et journalisée. Envoyez liens et textes tels quels.
Pour les services qui exigent answer et qui ont options.answer.choices dans services: récupérez les choix disponibles de la publication, affichez-les à votre client, puis envoyez la valeur answer de l'option choisie telle quelle dans 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 options du sondage · buttons boutons de concours (abonnement obligatoire) · reactions réactions du canal (les premium utilisent l'ID de l'emoji). Limite : 20 requêtes par minute. Canaux privés pris en charge via le lien d'invitation (t.me/+…/رقم المنشور).
En cas d'erreur, la réponse est de la forme: {"error": "رسالة الخطأ"}
Valeurs status possibles: Pending, Processing, In progress, Completed, Partial, Canceled.
Exemples d'erreurs d'options: 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).
dans services: Champ cancel = Le service permet l'arrêt, etrefill = prennent en charge la recharge. Statuts de recharge: Pending, In progress, Completed, Rejected.
Limite : 120 commandes par minute et par clé.
Même URL et même clé — votre site ou bot peut vendre des numéros de vérification automatiquement : services et pays, achat, réception du code, annulation remboursée si aucun code.
| action | Paramètres | Fonction |
|---|---|---|
sms_services | — | Tous les numéros disponibles : id, service, pays, country_iso, prix, stock, price_tiers (s'il a plusieurs prix) |
sms_tiers | id | Paliers de prix pour le même numéro (ex. 0.25 / 0.30 / 0.55) avec le stock |
sms_buy | id, tier (facultatif), max_price (facultatif) | Acheter un numéro — le prix est déduit de votre solde et renvoie order etphone |
sms_status | order | Statut du numéro et codes reçus (codes) et temps restant en secondes |
sms_cancel | order | Annuler avec remboursement complet (seulement sans code, 2 minutes après l'achat) |
sms_again | order | Demander un autre code sur le même numéro (si le service le permet) |
sms_finish | order | Terminer la commande après réception du code |
sms_orders | — | Vos 100 derniers numéros |
statuswaiting En attente du code · received Code reçu · finished Terminé · cancelled / expired / failed = annulé et remboursé automatiquement.
- Récupérez la liste avec
sms_serviceset affichez-la à vos clients à votre prix (ajoutez votre marge àprice). - Quand le client commande, envoyez
sms_buyavecidle numéro, et donnez-luiphone. - Vérifiez
sms_statustoutes les 5 secondes jusqu'à ce quecodesne soit plus vide, puis envoyez le code au client. - Si le temps expire sans code, le numéro est annulé et remboursé automatiquement — ou annulez-le avec
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"];
Erreurs possibles : Insufficient balance / Numbers section is disabled / messages clairs comme « Plus de numéros pour ce service ».
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);