v1

واجهة برمجية سريعة وآمنة
لاستبدال أكواد الألعاب

استبدل أكواد PUBG Mobile و Free Fire، وتفقّد اللاعبين، واجلب معلومات الأكواد من متجرك أو تطبيقك بطلب HTTP واحد. كل الردود بصيغة JSON.

https://api.devtechnobots.com/api/v1
JSONردود موحّدة وواضحة
2 ألعابPUBG Mobile و Free Fire
24hحد يومي يتجدد تلقائياً
JPGرابط صورة لكل استبدال PUBG

بداية سريعة

احصل على مفتاحكمن بوت تيليغرام: Reseller API ثم مفتاحي.
أرسل طلبكأرسل المفتاح مع الطلب بإحدى الطرق الثلاث الموضحة أدناه.
اقرأ الحقل successfulإن كان true فالعملية نجحت، وإلا فاقرأ error_code للتعامل البرمجي و error للعرض.

المصادقة

استخدم مفتاح API الخاص بك مع كل طلب. المفاتيح تبدأ بـ rk_. إن تسرّب مفتاحك فولّد مفتاحاً جديداً من البوت وسيتوقف القديم فوراً.

Query
?api_token=YOUR_TOKEN&player_id=123
JSON Body
POST {"api_token": "YOUR_TOKEN",
      "player_id": "123"}
ترويسة (Header)
Authorization: Bearer YOUR_TOKEN
X-API-Key: YOUR_TOKEN
كل نقاط النهاية تقبل GET و 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) ولا يُحذف، ويعود للعمل فور التجديد من البوت.
POSTGET/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());
رد ناجح HTTP 200
{
  "successful": true,
  "player_id": "51709255708",
  "name": "PlayerName"
}
رد فاشل HTTP 404
{
  "successful": false,
  "player_id": "51709255708",
  "error_code": "CHARACTER_NOT_FOUND",
  "error": "اللاعب غير موجود، تأكد من صحة الآيدي"
}
POSTGET/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());
رد ناجح HTTP 200
{
  "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"
}
رد فاشل HTTP 409
{
  "successful": false,
  "player_id": "51709255708",
  "code": "XXXX-****",
  "error_code": "CODE_USED",
  "error": "الكود مستخدم مسبقاً"
}
POSTGET/code-infoيُحتسب 0.5 عند النجاح

معلومات كود — PUBG Mobile

يخبرك إن كان الكود مستخدماً أم غير مستخدم، ويعيد دائماً تاريخ انتهاء صلاحيته. إن كان مستخدماً يعيد أيضاً اللاعب ووقت الاستبدال مع رابط صورة.

ثلاث حالات: مستخدم (used: true مع التفاصيل)، غير مستخدم (used: false ويبقى expires_at موجوداً)، وغير موجود (CODE_NOT_FOUND). متاحة لـ PUBG Mobile فقط.
رد ناجح — كود غير مستخدم HTTP 200
{
  "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());
رد ناجح HTTP 200
{
  "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"
}
رد فاشل HTTP 404
{
  "successful": false,
  "code": "XXXX-****",
  "error_code": "CODE_NOT_FOUND",
  "error": "الكود غير موجود أو خاطئ"
}
POSTGET/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());
رد ناجح HTTP 200
{
  "successful": true,
  "player_id": "123456789",
  "name": "PlayerName"
}
رد فاشل HTTP 404
{
  "successful": false,
  "player_id": "123456789",
  "error_code": "CHARACTER_NOT_FOUND",
  "error": "اللاعب غير موجود، تأكد من صحة الآيدي"
}
POSTGET/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());
رد ناجح HTTP 200
{
  "successful": true,
  "player_id": "123456789",
  "code": "XXXX-****",
  "name": "PlayerName",
  "product_name": "110 Diamonds",
  "took_ms": 2210
}
رد فاشل HTTP 422
{
  "successful": false,
  "player_id": "123456789",
  "code": "XXXX-****",
  "error_code": "INVALID_CODE",
  "error": "الكود غير صالح أو منتهي الصلاحية"
}

حالة الحساب

GETPOST/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_codeHTTPالمعنىما العمل
INVALID_TOKEN401مفتاح API غير صحيح أو ملغىتأكد من المفتاح أو ولّد مفتاحاً جديداً من البوت
ACCOUNT_DISABLED403الحساب غير مفعّل، تواصل مع الإدارةتواصل مع الإدارة لتفعيل الـ API
ACCOUNT_EXPIRED403انتهى اشتراكك، جدّده من البوتجدّد الخطة من البوت (خطتي ← تمديد)
REQUESTS_LIMIT429وصلت حدّك اليومي من الطلبات، يتجدد كل 24 ساعةانتظر موعد التجديد (الترويسة X-RateLimit-Reset) أو رقِّ الخطة
SERVICE_UNAVAILABLE503الخدمة متوقفة مؤقتاًحاول لاحقاً

التحقق من الطلب

error_codeHTTPالمعنىما العمل
INVALID_REQUEST400طلب غير صالح: تحقق من الحقول المطلوبةأرسل الحقول المطلوبة بالصيغة الصحيحة
INVALID_PLAYER_ID400آيدي اللاعب يجب أن يكون أرقاماً فقطأرسل أرقاماً فقط

أخطاء الكود

error_codeHTTPالمعنىما العمل
INVALID_CODE422الكود غير صالح أو منتهي الصلاحيةتحقق من الكود. لا تعِد المحاولة بنفس الكود
CODE_USED409الكود مستخدم مسبقاًالكود محروق، لا تعد المحاولة
CODE_EXPIRED410انتهت صلاحية الكودالكود منتهي
CODE_NOT_FOUND404الكود غير موجود أو خاطئتأكد من كتابة الكود
CODE_REGION_MISMATCH422الكود غير مخصص لمنطقة هذا الحساباستخدم كوداً مناسباً لمنطقة الحساب

أخطاء اللاعب

error_codeHTTPالمعنىما العمل
CHARACTER_NOT_FOUND404اللاعب غير موجود، تأكد من صحة الآيديتأكد من آيدي اللاعب
PLAYER_BANNED403حساب اللاعب محظورلا يمكن الشحن لهذا الحساب

مشاكل مؤقتة (لا تُحتسب من حدّك)

error_codeHTTPالمعنىما العمل
RISK_CONTROL403رُفضت العملية بسبب إجراءات الحماية، حاول لاحقاًأعد المحاولة بعد قليل. الكود لم يُستهلك
LOGIN_FAILED502فشل تسجيل الدخول لدى المزوّد، حاول مرة أخرىأعد المحاولة بعد قليل. الكود لم يُستهلك
NO_CODES_AVAILABLE503لا توجد أكواد متاحة لدى المزوّد حالياًأعد المحاولة بعد قليل. الكود لم يُستهلك
NO_ACCOUNTS_AVAILABLE503الخدمة غير متاحة حالياًأعد المحاولة بعد قليل. الكود لم يُستهلك
INVALID_ACTIVATION_RESPONSE502رد غير صالح من المزوّد، أعد المحاولةأعد المحاولة بعد قليل. الكود لم يُستهلك
PROVIDER_AUTH502مشكلة في ربط المزوّد، تواصل مع الإدارةمشكلة عندنا، تواصل مع الإدارة
SERVER_BUSY503السيرفر مشغول حالياً، حاول بعد قليلأعد المحاولة بعد قليل. الكود لم يُستهلك
SERVER_DOWN503السيرفر غير متاح حالياًأعد المحاولة بعد قليل. الكود لم يُستهلك
TIMEOUT504انتهت مهلة الاتصال بالمزوّدأعد المحاولة بعد قليل. الكود لم يُستهلك
NETWORK_ERROR502خطأ في الاتصال بالشبكةأعد المحاولة بعد قليل. الكود لم يُستهلك
UNKNOWN_ERROR502خطأ غير معروف من المزوّدالسبب الحقيقي يظهر في الحقل detail