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/quota

GET /api/quota

تحقق من الحصة المتبقية قبل بدء الوظائف

GET/api/quota

Response: يعيد إجمالي الحصة والمستخدمة والمتبقية والنسبة المئوية المستخدمة

curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/quota

GET /api/usage

احصل على إحصائيات الاستخدام للتقارير وتحليل التكاليف

GET/api/usage

Response: يعيد إجمالي الجلسات والدقائق الإجمالية وعدد الجلسات النشطة

curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/usage

GET /api/history

استرجع سجل الجلسات لآثار التدقيق

GET/api/history

Parameters: معاملات الاستعلام الاختيارية للبداية والنهاية (طوابع زمنية ISO 8601)

Response: يعيد مصفوفة من كائنات الجلسة مع المدة وأسباب قطع الاتصال

curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/history

POST /api/user-data

أنشئ حاوية بيانات مستخدم جديدة للحالة الدائمة للمتصفح (cookies وlocalStorage وما إلى ذلك)

POST/api/user-data

Response: يعيد معرّف بيانات المستخدم المُنشأ والطابع الزمني

curl -X POST -H "Authorization: Bearer your-token" https://cloud.bots.win/api/user-data

GET /api/user-data

اسرد جميع حاويات بيانات المستخدم للمستخدم المصرح

GET/api/user-data

Response: يعيد مصفوفة من كائنات بيانات المستخدم مع معلومات الحصة

curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/user-data

DELETE /api/user-data/:id

احذف حاوية بيانات المستخدم وأطلق الحصة

DELETE/api/user-data/:id

Response: يعيد حالة النجاح

curl -X DELETE -H "Authorization: Bearer your-token" \
  https://cloud.bots.win/api/user-data/udd_abc123xyz789defg

Framework 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 StatusCause
400معامل --proxy-server مفقود أو بتنسيق غير صحيح
401التوكن مفقود أو غير صالح
401الاشتراك غير نشط (لا يوجد اشتراك، منتهي الصلاحية، أو انتهت الفترة)
401انتهت صلاحية توكن التجربة المجانية أو تم استنفاد الحصة
403نفد رصيد الحساب — لا توجد ساعات اشتراك متبقية والرصيد صفر
429حسابات التجربة المجانية مقيدة بجلسة نشطة واحدة في آن واحد

أسباب قطع الاتصال

بمجرد فتح الجلسة، ستنتهي في نهاية المطاف بأحد الأسباب أدناه — المسجلة في /api/history. استخدم هذه الرموز لمعالجة الأخطاء وسجلات التدقيق.

CodeDescription
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 أو إغلاق غير طبيعي)