Documentation
مرجع API
نقاط نهاية REST API لإدارة الحصة وتتبع الاستخدام وسجل الجلسات
Quick Start
Connect your existing Puppeteer, Playwright, or CDP automation to BotCloud by swapping your WebSocket endpoint to wss://cloud.bots.win. No code rewrites — just one line change.
import puppeteer from "puppeteer-core";
const params = new URLSearchParams({
token: process.env.BOTCLOUD_TOKEN,
"--proxy-server": process.env.BOTCLOUD_PROXY,
device_type: "mac",
});
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://cloud.bots.win?${params.toString()}`,
});
const page = await browser.newPage();
await page.goto("https://example.com");
await page.screenshot({ path: "screenshot.png" });
await browser.close();المصادقة
جميع نقاط نهاية API تتطلب مصادقة رمز Bearer
# All API endpoints require Bearer token authentication
curl -H "Authorization: Bearer your-user-token-here" \
https://cloud.bots.win/api/quotaGET /api/quota
تحقق من الحصة المتبقية قبل بدء الوظائف
/api/quotaResponse: يعيد إجمالي الحصة والمستخدمة والمتبقية والنسبة المئوية المستخدمة
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/quotaGET /api/usage
احصل على إحصائيات الاستخدام للتقارير وتحليل التكاليف
/api/usageResponse: يعيد إجمالي الجلسات والدقائق الإجمالية وعدد الجلسات النشطة
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/usageGET /api/history
استرجع سجل الجلسات لآثار التدقيق
/api/historyParameters: معاملات الاستعلام الاختيارية للبداية والنهاية (طوابع زمنية ISO 8601)
Response: يعيد مصفوفة من كائنات الجلسة مع المدة وأسباب قطع الاتصال
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/historyPOST /api/user-data
أنشئ حاوية بيانات مستخدم جديدة للحالة الدائمة للمتصفح (cookies وlocalStorage وما إلى ذلك)
/api/user-dataResponse: يعيد معرّف بيانات المستخدم المُنشأ والطابع الزمني
curl -X POST -H "Authorization: Bearer your-token" https://cloud.bots.win/api/user-dataGET /api/user-data
اسرد جميع حاويات بيانات المستخدم للمستخدم المصرح
/api/user-dataResponse: يعيد مصفوفة من كائنات بيانات المستخدم مع معلومات الحصة
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/user-dataDELETE /api/user-data/:id
احذف حاوية بيانات المستخدم وأطلق الحصة
/api/user-data/:idResponse: يعيد حالة النجاح
curl -X DELETE -H "Authorization: Bearer your-token" \
https://cloud.bots.win/api/user-data/udd_abc123xyz789defgFramework Integration
Puppeteer, PuppeteerSharp, Playwright (Node.js / Python / .NET), raw CDP, Go (chromedp / rod), Java (native WebSocket), and Ruby (Ferrum) all work without code rewrites. Swap wss://cloud.bots.win as your endpoint and pass your token, proxy, and device type as query parameters.
import puppeteer from "puppeteer-core";
const params = new URLSearchParams({
token: process.env.BOTCLOUD_TOKEN,
"--proxy-server": process.env.BOTCLOUD_PROXY,
device_type: "mac",
});
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://cloud.bots.win?${params.toString()}`,
});
const page = await browser.newPage();
await page.goto("https://example.com");
await page.screenshot({ path: "screenshot.png" });
await browser.close();نموذج الفوترة
تتضمن خطط الاشتراك ساعات متصفح شهرية. بعد نفادها، يتم خصم الاستخدام الإضافي من رصيدك المدفوع مسبقاً بمعدل overage الخطة.
أخطاء الاتصال
تحدث هذه الأخطاء أثناء إنشاء الاتصال — لم يُنشأ الجلسة قط، لذلك لن تظهر في /api/history. تحقق من حالة HTTP والرسالة في جسم الاستجابة للتعامل معها.
| HTTP Status | Cause |
|---|---|
| 400 | معامل --proxy-server مفقود أو بتنسيق غير صحيح |
| 401 | التوكن مفقود أو غير صالح |
| 401 | الاشتراك غير نشط (لا يوجد اشتراك، منتهي الصلاحية، أو انتهت الفترة) |
| 401 | انتهت صلاحية توكن التجربة المجانية أو تم استنفاد الحصة |
| 403 | نفد رصيد الحساب — لا توجد ساعات اشتراك متبقية والرصيد صفر |
| 429 | حسابات التجربة المجانية مقيدة بجلسة نشطة واحدة في آن واحد |
أسباب قطع الاتصال
بمجرد فتح الجلسة، ستنتهي في نهاية المطاف بأحد الأسباب أدناه — المسجلة في /api/history. استخدم هذه الرموز لمعالجة الأخطاء وسجلات التدقيق.
| Code | Description |
|---|---|
| socket_close | أغلق العميل الاتصال (مثل browser.close() أو إنهاء العملية) — الأكثر شيوعاً، إنهاء طبيعي |
| idle_timeout | لا نشاط من العميل لفترة ممتدة — أنهت البوابة الجلسة |
| browser_close_graceful | أغلق المتصفح نفسه (مثل استدعاء window.close() من داخل الصفحة) |
| trial_exhausted | تم استنفاد حصة رمز التجربة المجانية خلال الجلسة |
| primary_blocked:Insufficient balance | نفد رصيد الحساب في منتصف الجلسة — أغلقت البوابة الجلسة |
| primary_blocked:Subscription lapsed or expired | انتهى الاشتراك أو أصبح غير نشط في منتصف الجلسة |
| browser_disconnect | انقطع اتصال المتصفح بالبوابة — يمكن إعادة المحاولة |
| browser_crash | تعطّلت عملية المتصفح — يمكن إعادة المحاولة |
| gateway_crash | أُعيدت البوابة — تم إنهاء جلستك، يمكن إعادة المحاولة |
| socket_error | خطأ على مستوى الشبكة (إعادة تعيين TCP أو إغلاق غير طبيعي) |