واجهة برمجية سريعة وآمنة
لاستبدال أكواد الألعاب
استبدل أكواد PUBG Mobile و Free Fire، وتفقّد اللاعبين، واجلب معلومات الأكواد من متجرك أو تطبيقك بطلب HTTP واحد. كل الردود بصيغة JSON.
https://api.devtechnobots.com/api/v1بداية سريعة
true فالعملية نجحت، وإلا فاقرأ error_code للتعامل البرمجي و error للعرض.المصادقة
استخدم مفتاح API الخاص بك مع كل طلب. المفاتيح تبدأ بـ rk_. إن تسرّب مفتاحك فولّد مفتاحاً جديداً من البوت وسيتوقف القديم فوراً.
?api_token=YOUR_TOKEN&player_id=123POST {"api_token": "YOUR_TOKEN",
"player_id": "123"}Authorization: Bearer YOUR_TOKEN
X-API-Key: YOUR_TOKENGET و POST. مع POST يمكن إرسال الحقول كـ JSON أو كـ form.الحدود والخطط
لكل خطة حد يومي يتجدد كل 24 ساعة. لا يُحتسب من الحد إلا الطلب الناجح؛ الطلبات الفاشلة (كود خاطئ، لاعب غير موجود، أعطال مؤقتة) مجانية.
🎁 5 طلبات مجانية تُمنح تلقائياً عند تفعيل الـAPI لحسابك لأول مرة لتجربة الخدمة (ترويسة X-Free-Trial: true). يتجدد الحد اليومي كل 24 ساعة، أو عند ساعة ثابتة يحدّدها لك الأدمن (مثلاً 00:00) — موعد التجديد القادم في الترويسة X-RateLimit-Reset.
| العملية | ما يُحتسب عند النجاح |
|---|---|
| استبدال مباشر | 1 |
| تفقد لاعب | 0.5 |
| معلومات كود | 0.5 |
| حالة الحساب | 0 |
كل رد يحمل ترويسات تساعدك على تتبع استهلاكك:
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 487.5
X-RateLimit-Reset: 2026-02-01T10:00:00Z
ACCOUNT_EXPIRED) ولا يُحذف، ويعود للعمل فور التجديد من البوت./check-playerيُحتسب 0.5 عند النجاحتفقد لاعب — PUBG Mobile
يتحقق من وجود اللاعب ويعيد اسمه داخل اللعبة.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
api_token | نص | نعم | مفتاحك (يمكن إرساله بالـ Query أو بالـ JSON أو بالترويسة) |
player_id | نص (أرقام) | نعم | آيدي اللاعب داخل اللعبة |
curl -X POST "https://api.devtechnobots.com/api/v1/check-player?api_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"player_id": "51709255708"}'curl "https://api.devtechnobots.com/api/v1/check-player?api_token=YOUR_TOKEN&player_id=51709255708"import requests
r = requests.post(
"https://api.devtechnobots.com/api/v1/check-player",
params={"api_token": "YOUR_TOKEN"},
json={"player_id": "51709255708"},
timeout=40,
)
print(r.json())const res = await fetch("https://api.devtechnobots.com/api/v1/check-player?api_token=YOUR_TOKEN", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"player_id": "51709255708"}),
});
console.log(await res.json());{
"successful": true,
"player_id": "51709255708",
"name": "PlayerName"
}{
"successful": false,
"player_id": "51709255708",
"error_code": "CHARACTER_NOT_FOUND",
"error": "اللاعب غير موجود، تأكد من صحة الآيدي"
}/redeem/directيُحتسب 1 عند النجاحاستبدال مباشر — PUBG Mobile
يستبدل الكود على آيدي اللاعب. عند النجاح يعيد أيضاً رابط صورة الإيصال في الحقل image_url.
image_url رابط مباشر لصورة JPG جاهز للعرض أو الإرسال لعميلك. قد يكون null في حال تعذّر إنتاج الصورة، ولا يؤثر ذلك على نجاح الاستبدال.| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
api_token | نص | نعم | مفتاحك (يمكن إرساله بالـ Query أو بالـ JSON أو بالترويسة) |
player_id | نص (أرقام) | نعم | آيدي اللاعب داخل اللعبة |
code | نص | نعم | كود الشحن |
curl -X POST "https://api.devtechnobots.com/api/v1/redeem/direct?api_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"player_id": "51709255708", "code": "XXXX-XXXX-XXXX"}'curl "https://api.devtechnobots.com/api/v1/redeem/direct?api_token=YOUR_TOKEN&player_id=51709255708&code=XXXX-XXXX-XXXX"import requests
r = requests.post(
"https://api.devtechnobots.com/api/v1/redeem/direct",
params={"api_token": "YOUR_TOKEN"},
json={"player_id": "51709255708", "code": "XXXX-XXXX-XXXX"},
timeout=40,
)
print(r.json())const res = await fetch("https://api.devtechnobots.com/api/v1/redeem/direct?api_token=YOUR_TOKEN", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"player_id": "51709255708", "code": "XXXX-XXXX-XXXX"}),
});
console.log(await res.json());{
"successful": true,
"player_id": "51709255708",
"code": "XXXX-****",
"name": "PlayerName",
"product_name": "60 UC",
"took_ms": 1840,
"image_url": "https://i.ibb.co/xxxxxxx/receipt.jpg"
}{
"successful": false,
"player_id": "51709255708",
"code": "XXXX-****",
"error_code": "CODE_USED",
"error": "الكود مستخدم مسبقاً"
}/code-infoيُحتسب 0.5 عند النجاحمعلومات كود — PUBG Mobile
يخبرك إن كان الكود مستخدماً أم غير مستخدم، ويعيد دائماً تاريخ انتهاء صلاحيته. إن كان مستخدماً يعيد أيضاً اللاعب ووقت الاستبدال مع رابط صورة.
used: true مع التفاصيل)، غير مستخدم (used: false ويبقى expires_at موجوداً)، وغير موجود (CODE_NOT_FOUND). متاحة لـ PUBG Mobile فقط.{
"successful": true,
"used": false,
"code": "XXXX-****",
"player_id": null,
"name": null,
"amount": 60,
"product_name": "60 UC",
"channel_name": "MTCGAME CO., LIMITED",
"created_at": null,
"expires_at": "2027-10-06T15:59:59Z",
"image_url": null
}| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
api_token | نص | نعم | مفتاحك (يمكن إرساله بالـ Query أو بالـ JSON أو بالترويسة) |
code | نص | نعم | كود الشحن |
curl -X POST "https://api.devtechnobots.com/api/v1/code-info?api_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"code": "XXXX-XXXX-XXXX"}'curl "https://api.devtechnobots.com/api/v1/code-info?api_token=YOUR_TOKEN&code=XXXX-XXXX-XXXX"import requests
r = requests.post(
"https://api.devtechnobots.com/api/v1/code-info",
params={"api_token": "YOUR_TOKEN"},
json={"code": "XXXX-XXXX-XXXX"},
timeout=40,
)
print(r.json())const res = await fetch("https://api.devtechnobots.com/api/v1/code-info?api_token=YOUR_TOKEN", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"code": "XXXX-XXXX-XXXX"}),
});
console.log(await res.json());{
"successful": true,
"used": true,
"code": "XXXX-****",
"player_id": "5398786977",
"name": "PlayerName",
"amount": 660,
"product_name": "660 UC",
"channel_name": "Mintroute DMCC",
"created_at": "2024-09-24T15:08:42Z",
"expires_at": "2025-09-18T15:59:59Z",
"image_url": "https://i.ibb.co/xxxxxxx/receipt.jpg"
}{
"successful": false,
"code": "XXXX-****",
"error_code": "CODE_NOT_FOUND",
"error": "الكود غير موجود أو خاطئ"
}/ff/check-playerيُحتسب 0.5 عند النجاحتفقد لاعب — Free Fire
نفس صيغة PUBG تماماً، يتغير المسار فقط.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
api_token | نص | نعم | مفتاحك (يمكن إرساله بالـ Query أو بالـ JSON أو بالترويسة) |
player_id | نص (أرقام) | نعم | آيدي اللاعب داخل اللعبة |
curl -X POST "https://api.devtechnobots.com/api/v1/ff/check-player?api_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"player_id": "123456789"}'curl "https://api.devtechnobots.com/api/v1/ff/check-player?api_token=YOUR_TOKEN&player_id=123456789"import requests
r = requests.post(
"https://api.devtechnobots.com/api/v1/ff/check-player",
params={"api_token": "YOUR_TOKEN"},
json={"player_id": "123456789"},
timeout=40,
)
print(r.json())const res = await fetch("https://api.devtechnobots.com/api/v1/ff/check-player?api_token=YOUR_TOKEN", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"player_id": "123456789"}),
});
console.log(await res.json());{
"successful": true,
"player_id": "123456789",
"name": "PlayerName"
}{
"successful": false,
"player_id": "123456789",
"error_code": "CHARACTER_NOT_FOUND",
"error": "اللاعب غير موجود، تأكد من صحة الآيدي"
}/ff/redeem/directيُحتسب 1 عند النجاحاستبدال مباشر — Free Fire
نفس صيغة PUBG، بدون حقل image_url (الإيصال لـ PUBG فقط).
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
api_token | نص | نعم | مفتاحك (يمكن إرساله بالـ Query أو بالـ JSON أو بالترويسة) |
player_id | نص (أرقام) | نعم | آيدي اللاعب داخل اللعبة |
code | نص | نعم | كود الشحن |
curl -X POST "https://api.devtechnobots.com/api/v1/ff/redeem/direct?api_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"player_id": "123456789", "code": "XXXX-XXXX-XXXX"}'curl "https://api.devtechnobots.com/api/v1/ff/redeem/direct?api_token=YOUR_TOKEN&player_id=123456789&code=XXXX-XXXX-XXXX"import requests
r = requests.post(
"https://api.devtechnobots.com/api/v1/ff/redeem/direct",
params={"api_token": "YOUR_TOKEN"},
json={"player_id": "123456789", "code": "XXXX-XXXX-XXXX"},
timeout=40,
)
print(r.json())const res = await fetch("https://api.devtechnobots.com/api/v1/ff/redeem/direct?api_token=YOUR_TOKEN", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"player_id": "123456789", "code": "XXXX-XXXX-XXXX"}),
});
console.log(await res.json());{
"successful": true,
"player_id": "123456789",
"code": "XXXX-****",
"name": "PlayerName",
"product_name": "110 Diamonds",
"took_ms": 2210
}{
"successful": false,
"player_id": "123456789",
"code": "XXXX-****",
"error_code": "INVALID_CODE",
"error": "الكود غير صالح أو منتهي الصلاحية"
}المخزون عبر الـ API
تدير مخزون أكوادك الخاص (نفس مخزون البوت) وتستبدل منه بدون إرسال الكود في كل طلب. المخزون مشفّر ومعزول عن بقية المستخدمين.
رموز الفئات
| category | الفئة (UC) |
|---|---|
1 | 60 |
2 | 325 |
3 | 660 |
4 | 1800 |
5 | 3850 |
6 | 8100 |
| category | الفئة (جواهر) |
|---|---|
1 | 110 |
2 | 230 |
3 | 581 |
4 | 1188 |
5 | 2400 |
نظاما الاستبدال من المخزون
تختار النظام من البوت: Reseller API ← 📦 إدارة المخزون (سويتش تشغيل/إيقاف). الرد يحمل دائماً الحقل mode.
| النظام | mode | السلوك |
|---|---|---|
| 🔁 تلقائي (الافتراضي) | auto_retry | إن فشل كود يُسجَّل في failed_codes ويجرّب الكود التالي حتى ينجح الاستبدال، ثم يعيد فاتورة طبيعية. |
| ☝️ محاولة واحدة | single_attempt | يجرّب كوداً واحداً فقط. إن فشل بسبب الكود يعيد successful: false مع error_code وreason (سبب فشل الكود) وfailed_code، ويُعلَّم الكود فاشلاً. |
الأكواد التي لا يستطيع الـAPI أن يجرّبها (لاعب غير موجود، عطل مؤقت) لا تُحرق وتبقى متاحة.
/stock/redeemيُحتسب 1 عند النجاحاستبدال من المخزون — PUBG
يستبدل من مخزونك حسب النظام المختار في البوت (mode).
image_url رابط مباشر لصورة الإيصال جاهز للعرض أو الإرسال لعميلك (قد يكون null إن تعذّر إنتاجها دون أن يؤثر ذلك على نجاح الاستبدال).{
"successful": true,
"game": "pubg",
"category": 1,
"category_value": "60",
"player_id": "51709255708",
"mode": "auto_retry",
"code": "XXXX-XXXX-XXXX",
"name": "PlayerName",
"product_name": "60 UC",
"amount": 60,
"took_ms": 3120,
"failed_codes": [
{
"code": "BAD1-0001",
"error_code": "CODE_USED",
"reason": "الكود مستخدم مسبقاً"
}
],
"image_url": "https://i.ibb.co/xxxxxxx/receipt.jpg"
}{
"successful": false,
"game": "pubg",
"category": 1,
"category_value": "60",
"player_id": "51709255708",
"mode": "single_attempt",
"failed_code": "BAD1-0001",
"reason": "الكود مستخدم مسبقاً",
"error_code": "CODE_USED",
"error": "الكود مستخدم مسبقاً"
}{
"successful": false,
"game": "pubg",
"category": 1,
"player_id": "51709255708",
"mode": "auto_retry",
"error_code": "STOCK_EMPTY",
"error": "لا يوجد مخزون متاح في هذه الفئة",
"failed_codes": [
{
"code": "BAD1-0001",
"error_code": "CODE_USED",
"reason": "الكود مستخدم مسبقاً"
}
]
}| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
api_token | نص | نعم | مفتاحك (يمكن إرساله بالـ Query أو بالـ JSON أو بالترويسة) |
category | رقم | نعم | رمز الفئة (1، 2، 3…) حسب الجدول أعلاه |
player_id | نص (أرقام) | نعم | آيدي اللاعب داخل اللعبة |
curl -X POST "https://api.devtechnobots.com/api/v1/stock/redeem?api_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"category": 1, "player_id": "51709255708"}'curl "https://api.devtechnobots.com/api/v1/stock/redeem?api_token=YOUR_TOKEN&category=1&player_id=51709255708"import requests
r = requests.post(
"https://api.devtechnobots.com/api/v1/stock/redeem",
params={"api_token": "YOUR_TOKEN"},
json={"category": 1, "player_id": "51709255708"},
timeout=40,
)
print(r.json())const res = await fetch("https://api.devtechnobots.com/api/v1/stock/redeem?api_token=YOUR_TOKEN", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"category": 1, "player_id": "51709255708"}),
});
console.log(await res.json());{
"successful": true,
"game": "pubg",
"category": 1,
"category_value": "60",
"player_id": "51709255708",
"mode": "auto_retry",
"code": "XXXX-XXXX-XXXX",
"name": "PlayerName",
"product_name": "60 UC",
"amount": 60,
"took_ms": 3120,
"failed_codes": [
{
"code": "BAD1-0001",
"error_code": "CODE_USED",
"reason": "الكود مستخدم مسبقاً"
}
],
"image_url": "https://i.ibb.co/xxxxxxx/receipt.jpg"
}{
"successful": false,
"game": "pubg",
"category": 1,
"category_value": "60",
"player_id": "51709255708",
"mode": "single_attempt",
"failed_code": "BAD1-0001",
"reason": "الكود مستخدم مسبقاً",
"error_code": "CODE_USED",
"error": "الكود مستخدم مسبقاً"
}/ff/stock/redeemيُحتسب 1 عند النجاحاستبدال من المخزون — Free Fire
يستبدل من مخزونك حسب النظام المختار في البوت (mode).
{
"successful": true,
"game": "ff",
"category": 1,
"category_value": "110",
"player_id": "51709255708",
"mode": "auto_retry",
"code": "XXXX-XXXX-XXXX",
"name": "PlayerName",
"product_name": "110 Diamonds",
"amount": 60,
"took_ms": 3120,
"failed_codes": [
{
"code": "BAD1-0001",
"error_code": "CODE_USED",
"reason": "الكود مستخدم مسبقاً"
}
]
}{
"successful": false,
"game": "ff",
"category": 1,
"category_value": "110",
"player_id": "51709255708",
"mode": "single_attempt",
"failed_code": "BAD1-0001",
"reason": "الكود مستخدم مسبقاً",
"error_code": "CODE_USED",
"error": "الكود مستخدم مسبقاً"
}{
"successful": false,
"game": "ff",
"category": 1,
"player_id": "51709255708",
"mode": "auto_retry",
"error_code": "STOCK_EMPTY",
"error": "لا يوجد مخزون متاح في هذه الفئة",
"failed_codes": [
{
"code": "BAD1-0001",
"error_code": "CODE_USED",
"reason": "الكود مستخدم مسبقاً"
}
]
}| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
api_token | نص | نعم | مفتاحك (يمكن إرساله بالـ Query أو بالـ JSON أو بالترويسة) |
category | رقم | نعم | رمز الفئة (1، 2، 3…) حسب الجدول أعلاه |
player_id | نص (أرقام) | نعم | آيدي اللاعب داخل اللعبة |
curl -X POST "https://api.devtechnobots.com/api/v1/ff/stock/redeem?api_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"category": 1, "player_id": "51709255708"}'curl "https://api.devtechnobots.com/api/v1/ff/stock/redeem?api_token=YOUR_TOKEN&category=1&player_id=51709255708"import requests
r = requests.post(
"https://api.devtechnobots.com/api/v1/ff/stock/redeem",
params={"api_token": "YOUR_TOKEN"},
json={"category": 1, "player_id": "51709255708"},
timeout=40,
)
print(r.json())const res = await fetch("https://api.devtechnobots.com/api/v1/ff/stock/redeem?api_token=YOUR_TOKEN", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"category": 1, "player_id": "51709255708"}),
});
console.log(await res.json());{
"successful": true,
"game": "ff",
"category": 1,
"category_value": "110",
"player_id": "51709255708",
"mode": "auto_retry",
"code": "XXXX-XXXX-XXXX",
"name": "PlayerName",
"product_name": "110 Diamonds",
"amount": 60,
"took_ms": 3120,
"failed_codes": [
{
"code": "BAD1-0001",
"error_code": "CODE_USED",
"reason": "الكود مستخدم مسبقاً"
}
]
}{
"successful": false,
"game": "ff",
"category": 1,
"category_value": "110",
"player_id": "51709255708",
"mode": "single_attempt",
"failed_code": "BAD1-0001",
"reason": "الكود مستخدم مسبقاً",
"error_code": "CODE_USED",
"error": "الكود مستخدم مسبقاً"
}/stock/addمجانيإدخال أكواد للمخزون — PUBG Mobile
يضيف أكواداً إلى فئة في مخزونك ويعيد تقريراً: كم نجح، كم فشل، وأي كود فشل وسببه.
"AAAA-0001,BBBB-0002" أو مصفوفة JSON تحت بعض. أسباب الفشل: INVALID_FORMAT صيغة غلط، ALREADY_EXISTS موجود مسبقاً، DUPLICATE_IN_REQUEST مكرر في نفس الطلب، STOCK_LIMIT تجاوز 50000 كود.{
"category": 1,
"codes": [
"AAAA-0001",
"BBBB-0002",
"CCCC-0003"
]
}| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
api_token | نص | نعم | مفتاحك (يمكن إرساله بالـ Query أو بالـ JSON أو بالترويسة) |
category | رقم | نعم | رمز الفئة (1، 2، 3…) حسب الجدول أعلاه |
codes | نص أو مصفوفة | نعم | الأكواد: نص تفصل بينها فواصل أو أسطر أو مسافات، أو مصفوفة JSON. أرقام وحروف إنجليزية وشرطة فقط، حتى 1000 كود في الطلب |
curl -X POST "https://api.devtechnobots.com/api/v1/stock/add?api_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"category": 1, "codes": "AAAA-0001,BBBB-0002\nCCCC-0003"}'import requests
r = requests.post(
"https://api.devtechnobots.com/api/v1/stock/add",
params={"api_token": "YOUR_TOKEN"},
json={"category": 1, "codes": "AAAA-0001,BBBB-0002\nCCCC-0003"},
timeout=40,
)
print(r.json())const res = await fetch("https://api.devtechnobots.com/api/v1/stock/add?api_token=YOUR_TOKEN", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"category": 1, "codes": "AAAA-0001,BBBB-0002\nCCCC-0003"}),
});
console.log(await res.json());{
"successful": true,
"game": "pubg",
"category": 1,
"category_value": "60",
"total": 4,
"succeeded": 2,
"failed": 2,
"partial": true,
"failed_codes": [
{
"code": "AAAA-0001",
"reason": "ALREADY_EXISTS",
"reason_ar": "موجود مسبقاً في مخزونك"
},
{
"code": "bad!code",
"reason": "INVALID_FORMAT",
"reason_ar": "صيغة الكود غير صحيحة (أرقام وحروف وشرطة فقط، 4-64 خانة)"
}
]
}{
"successful": false,
"game": "pubg",
"category": 1,
"total": 1,
"succeeded": 0,
"failed": 1,
"failed_codes": [
{
"code": "bad!code",
"reason": "INVALID_FORMAT",
"reason_ar": "صيغة الكود غير صحيحة"
}
],
"error_code": "NO_CODES_PROCESSED",
"error": "لم تُعالَج أي أكواد بنجاح"
}/stock/withdrawمجانيسحب أكواد من المخزون — PUBG Mobile
يسحب أكواداً محددة من فئة معيّنة (تُحذف من مخزونك) ويعيد تقريراً بالنجاح والفشل وأسبابه.
NOT_AVAILABLE غير موجود/غير متوفر بهذه الفئة، ALREADY_USED مستبدل مسبقاً، INVALID_FORMAT صيغة غلط، IN_USE قيد الاستخدام لحظياً.سحب بالعدد: أرسل
count بدل codes لسحب أول N كوداً متاحاً وإرجاعها في codes.{
"successful": true,
"game": "pubg",
"category": 1,
"requested": 3,
"succeeded": 3,
"failed": 0,
"codes": [
"AAAA-0001",
"BBBB-0002",
"CCCC-0003"
],
"failed_codes": []
}| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
api_token | نص | نعم | مفتاحك (يمكن إرساله بالـ Query أو بالـ JSON أو بالترويسة) |
category | رقم | نعم | رمز الفئة (1، 2، 3…) حسب الجدول أعلاه |
codes | نص أو مصفوفة | لا | الأكواد المراد سحبها (أو استخدم count) |
count | رقم | لا | عدد الأكواد المراد سحبها تلقائياً (بدل codes) |
curl -X POST "https://api.devtechnobots.com/api/v1/stock/withdraw?api_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"category": 1, "codes": "AAAA-0001,BBBB-0002,ZZZZ-9999"}'import requests
r = requests.post(
"https://api.devtechnobots.com/api/v1/stock/withdraw",
params={"api_token": "YOUR_TOKEN"},
json={"category": 1, "codes": "AAAA-0001,BBBB-0002,ZZZZ-9999"},
timeout=40,
)
print(r.json())const res = await fetch("https://api.devtechnobots.com/api/v1/stock/withdraw?api_token=YOUR_TOKEN", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"category": 1, "codes": "AAAA-0001,BBBB-0002,ZZZZ-9999"}),
});
console.log(await res.json());{
"successful": true,
"game": "pubg",
"category": 1,
"category_value": "60",
"total": 3,
"succeeded": 2,
"failed": 1,
"withdrawn_count": 2,
"partial": true,
"failed_codes": [
{
"code": "ZZZZ-9999",
"reason": "NOT_AVAILABLE",
"reason_ar": "غير متوفر في هذه الفئة من مخزونك"
}
]
}{
"successful": false,
"game": "pubg",
"category": 1,
"total": 1,
"succeeded": 0,
"failed": 1,
"failed_codes": [
{
"code": "ZZZZ-9999",
"reason": "NOT_AVAILABLE",
"reason_ar": "غير متوفر في هذه الفئة من مخزونك"
}
],
"error_code": "NO_CODES_PROCESSED",
"error": "لم تُعالَج أي أكواد بنجاح"
}/ff/stock/addمجانيإدخال أكواد للمخزون — Free Fire
يضيف أكواداً إلى فئة في مخزونك ويعيد تقريراً: كم نجح، كم فشل، وأي كود فشل وسببه.
"AAAA-0001,BBBB-0002" أو مصفوفة JSON تحت بعض. أسباب الفشل: INVALID_FORMAT صيغة غلط، ALREADY_EXISTS موجود مسبقاً، DUPLICATE_IN_REQUEST مكرر في نفس الطلب، STOCK_LIMIT تجاوز 50000 كود.{
"category": 1,
"codes": [
"AAAA-0001",
"BBBB-0002",
"CCCC-0003"
]
}| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
api_token | نص | نعم | مفتاحك (يمكن إرساله بالـ Query أو بالـ JSON أو بالترويسة) |
category | رقم | نعم | رمز الفئة (1، 2، 3…) حسب الجدول أعلاه |
codes | نص أو مصفوفة | نعم | الأكواد: نص تفصل بينها فواصل أو أسطر أو مسافات، أو مصفوفة JSON. أرقام وحروف إنجليزية وشرطة فقط، حتى 1000 كود في الطلب |
curl -X POST "https://api.devtechnobots.com/api/v1/ff/stock/add?api_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"category": 1, "codes": "AAAA-0001,BBBB-0002\nCCCC-0003"}'import requests
r = requests.post(
"https://api.devtechnobots.com/api/v1/ff/stock/add",
params={"api_token": "YOUR_TOKEN"},
json={"category": 1, "codes": "AAAA-0001,BBBB-0002\nCCCC-0003"},
timeout=40,
)
print(r.json())const res = await fetch("https://api.devtechnobots.com/api/v1/ff/stock/add?api_token=YOUR_TOKEN", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"category": 1, "codes": "AAAA-0001,BBBB-0002\nCCCC-0003"}),
});
console.log(await res.json());{
"successful": true,
"game": "ff",
"category": 1,
"category_value": "110",
"total": 4,
"succeeded": 2,
"failed": 2,
"partial": true,
"failed_codes": [
{
"code": "AAAA-0001",
"reason": "ALREADY_EXISTS",
"reason_ar": "موجود مسبقاً في مخزونك"
},
{
"code": "bad!code",
"reason": "INVALID_FORMAT",
"reason_ar": "صيغة الكود غير صحيحة (أرقام وحروف وشرطة فقط، 4-64 خانة)"
}
]
}{
"successful": false,
"game": "ff",
"category": 1,
"total": 1,
"succeeded": 0,
"failed": 1,
"failed_codes": [
{
"code": "bad!code",
"reason": "INVALID_FORMAT",
"reason_ar": "صيغة الكود غير صحيحة"
}
],
"error_code": "NO_CODES_PROCESSED",
"error": "لم تُعالَج أي أكواد بنجاح"
}/ff/stock/withdrawمجانيسحب أكواد من المخزون — Free Fire
يسحب أكواداً محددة من فئة معيّنة (تُحذف من مخزونك) ويعيد تقريراً بالنجاح والفشل وأسبابه.
NOT_AVAILABLE غير موجود/غير متوفر بهذه الفئة، ALREADY_USED مستبدل مسبقاً، INVALID_FORMAT صيغة غلط، IN_USE قيد الاستخدام لحظياً.سحب بالعدد: أرسل
count بدل codes لسحب أول N كوداً متاحاً وإرجاعها في codes.{
"successful": true,
"game": "ff",
"category": 1,
"requested": 3,
"succeeded": 3,
"failed": 0,
"codes": [
"AAAA-0001",
"BBBB-0002",
"CCCC-0003"
],
"failed_codes": []
}| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
api_token | نص | نعم | مفتاحك (يمكن إرساله بالـ Query أو بالـ JSON أو بالترويسة) |
category | رقم | نعم | رمز الفئة (1، 2، 3…) حسب الجدول أعلاه |
codes | نص أو مصفوفة | لا | الأكواد المراد سحبها (أو استخدم count) |
count | رقم | لا | عدد الأكواد المراد سحبها تلقائياً (بدل codes) |
curl -X POST "https://api.devtechnobots.com/api/v1/ff/stock/withdraw?api_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"category": 1, "codes": "AAAA-0001,BBBB-0002,ZZZZ-9999"}'import requests
r = requests.post(
"https://api.devtechnobots.com/api/v1/ff/stock/withdraw",
params={"api_token": "YOUR_TOKEN"},
json={"category": 1, "codes": "AAAA-0001,BBBB-0002,ZZZZ-9999"},
timeout=40,
)
print(r.json())const res = await fetch("https://api.devtechnobots.com/api/v1/ff/stock/withdraw?api_token=YOUR_TOKEN", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({"category": 1, "codes": "AAAA-0001,BBBB-0002,ZZZZ-9999"}),
});
console.log(await res.json());{
"successful": true,
"game": "ff",
"category": 1,
"category_value": "110",
"total": 3,
"succeeded": 2,
"failed": 1,
"withdrawn_count": 2,
"partial": true,
"failed_codes": [
{
"code": "ZZZZ-9999",
"reason": "NOT_AVAILABLE",
"reason_ar": "غير متوفر في هذه الفئة من مخزونك"
}
]
}{
"successful": false,
"game": "ff",
"category": 1,
"total": 1,
"succeeded": 0,
"failed": 1,
"failed_codes": [
{
"code": "ZZZZ-9999",
"reason": "NOT_AVAILABLE",
"reason_ar": "غير متوفر في هذه الفئة من مخزونك"
}
],
"error_code": "NO_CODES_PROCESSED",
"error": "لم تُعالَج أي أكواد بنجاح"
}/stock/categoriesمجانيالفئات وأرصدة المخزون
يعيد رموز الفئات وعدد الأكواد (متاح/مستبدل/فاشل) للعبتين، والنظام الحالي mode.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
api_token | نص | نعم | مفتاحك (يمكن إرساله بالـ Query أو بالـ JSON أو بالترويسة) |
curl -X POST "https://api.devtechnobots.com/api/v1/stock/categories?api_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'curl "https://api.devtechnobots.com/api/v1/stock/categories?api_token=YOUR_TOKEN&"import requests
r = requests.post(
"https://api.devtechnobots.com/api/v1/stock/categories",
params={"api_token": "YOUR_TOKEN"},
json={},
timeout=40,
)
print(r.json())const res = await fetch("https://api.devtechnobots.com/api/v1/stock/categories?api_token=YOUR_TOKEN", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({}),
});
console.log(await res.json());{
"successful": true,
"mode": "auto_retry",
"pubg": [
{
"category": 1,
"value": "60",
"available": 12,
"used": 30,
"failed": 2
}
],
"ff": [
{
"category": 1,
"value": "110",
"available": 5,
"used": 8,
"failed": 0
}
]
}{
"successful": false,
"error_code": "INVALID_TOKEN",
"error": "مفتاح API غير صحيح أو ملغى"
}حالة الحساب
/accountمجانييعرض خطتك واستهلاكك الحالي وموعد التجديد، ولا يستهلك من حدّك اليومي.
curl "https://api.devtechnobots.com/api/v1/account?api_token=YOUR_TOKEN"
{
"successful": true,
"status": "active",
"plan": "Pro",
"daily_limit": 500,
"used_today": 12.5,
"remaining_today": 487.5,
"resets_at": "2026-02-01T10:00:00Z",
"expires_at": "2026-02-28T10:00:00Z"
}
رموز الأخطاء
الرد الناجح دائماً HTTP 200، وأي خطأ يعيد HTTP مختلفاً (4xx للأخطاء منك أو من الكود، 5xx لمشاكل مؤقتة). كل رد فاشل يحمل error_code ثابت (للبرمجة) و error بالعربية (للعرض)، وأحياناً detail بالسبب الأصلي من المزوّد عندما يكون غير مصنَّف.
المصادقة والحساب
| error_code | HTTP | المعنى | ما العمل |
|---|---|---|---|
INVALID_TOKEN | 401 | مفتاح API غير صحيح أو ملغى | تأكد من المفتاح أو ولّد مفتاحاً جديداً من البوت |
ACCOUNT_DISABLED | 403 | الحساب غير مفعّل، تواصل مع الإدارة | تواصل مع الإدارة لتفعيل الـ API |
ACCOUNT_EXPIRED | 403 | انتهى اشتراكك، جدّده من البوت | جدّد الخطة من البوت (خطتي ← تمديد) |
REQUESTS_LIMIT | 429 | وصلت حدّك اليومي من الطلبات، يتجدد كل 24 ساعة | انتظر موعد التجديد (الترويسة X-RateLimit-Reset) أو رقِّ الخطة |
SERVICE_UNAVAILABLE | 503 | الخدمة متوقفة مؤقتاً | حاول لاحقاً |
التحقق من الطلب
| error_code | HTTP | المعنى | ما العمل |
|---|---|---|---|
INVALID_REQUEST | 400 | طلب غير صالح: تحقق من الحقول المطلوبة | أرسل الحقول المطلوبة بالصيغة الصحيحة |
INVALID_PLAYER_ID | 400 | آيدي اللاعب يجب أن يكون أرقاماً فقط | أرسل أرقاماً فقط |
أخطاء الكود
| error_code | HTTP | المعنى | ما العمل |
|---|---|---|---|
INVALID_CODE | 422 | الكود غير صالح أو منتهي الصلاحية | تحقق من الكود. لا تعِد المحاولة بنفس الكود |
CODE_USED | 409 | الكود مستخدم مسبقاً | الكود محروق، لا تعد المحاولة |
CODE_EXPIRED | 410 | انتهت صلاحية الكود | الكود منتهي |
CODE_NOT_FOUND | 404 | الكود غير موجود أو خاطئ | تأكد من كتابة الكود |
CODE_REGION_MISMATCH | 422 | الكود غير مخصص لمنطقة هذا الحساب | استخدم كوداً مناسباً لمنطقة الحساب |
المخزون عبر API
| error_code | HTTP | المعنى | ما العمل |
|---|---|---|---|
INVALID_CATEGORY | 400 | رمز الفئة غير صحيح | استخدم رمز فئة صحيحاً (1..n) من الجدول |
INVALID_CODES | 400 | حقل الأكواد غير صالح: أرسل نصاً (أرقام وحروف وشرطة فقط) أو مصفوفة JSON | أرسل نصاً أو مصفوفة JSON بأرقام وحروف وشرطة فقط |
STOCK_EMPTY | 409 | لا يوجد مخزون متاح في هذه الفئة | أضف أكواداً لهذه الفئة عبر /stock/add |
TOO_MANY_FAILURES | 409 | فشلت عدة أكواد متتالية فتوقّف النظام لحماية مخزونك | راجع failed_codes ونظّف مخزونك |
NO_CODES_PROCESSED | 422 | لم تُعالَج أي أكواد بنجاح | راجع failed_codes لمعرفة سبب كل كود |
PAYLOAD_TOO_LARGE | 413 | الطلب كبير جداً | قسّم الأكواد على عدة طلبات |
أخطاء اللاعب
| error_code | HTTP | المعنى | ما العمل |
|---|---|---|---|
CHARACTER_NOT_FOUND | 404 | اللاعب غير موجود، تأكد من صحة الآيدي | تأكد من آيدي اللاعب |
PLAYER_BANNED | 403 | حساب اللاعب محظور | لا يمكن الشحن لهذا الحساب |
مشاكل مؤقتة (لا تُحتسب من حدّك)
| error_code | HTTP | المعنى | ما العمل |
|---|---|---|---|
RISK_CONTROL | 403 | رُفضت العملية بسبب إجراءات الحماية، حاول لاحقاً | أعد المحاولة بعد قليل. الكود لم يُستهلك |
LOGIN_FAILED | 502 | فشل تسجيل الدخول لدى المزوّد، حاول مرة أخرى | أعد المحاولة بعد قليل. الكود لم يُستهلك |
NO_CODES_AVAILABLE | 503 | لا توجد أكواد متاحة لدى المزوّد حالياً | أعد المحاولة بعد قليل. الكود لم يُستهلك |
NO_ACCOUNTS_AVAILABLE | 503 | الخدمة غير متاحة حالياً | أعد المحاولة بعد قليل. الكود لم يُستهلك |
INVALID_ACTIVATION_RESPONSE | 502 | رد غير صالح من المزوّد، أعد المحاولة | أعد المحاولة بعد قليل. الكود لم يُستهلك |
PROVIDER_AUTH | 502 | مشكلة في ربط المزوّد، تواصل مع الإدارة | مشكلة عندنا، تواصل مع الإدارة |
SERVER_BUSY | 503 | السيرفر مشغول حالياً، حاول بعد قليل | أعد المحاولة بعد قليل. الكود لم يُستهلك |
SERVER_DOWN | 503 | السيرفر غير متاح حالياً | أعد المحاولة بعد قليل. الكود لم يُستهلك |
TIMEOUT | 504 | انتهت مهلة الاتصال بالمزوّد | أعد المحاولة بعد قليل. الكود لم يُستهلك |
NETWORK_ERROR | 502 | خطأ في الاتصال بالشبكة | أعد المحاولة بعد قليل. الكود لم يُستهلك |
UNKNOWN_ERROR | 502 | خطأ غير معروف من المزوّد | السبب الحقيقي يظهر في الحقل detail |