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: Возвращает созданный ID пользовательских данных и временную метку
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 | Пробные аккаунты ограничены 1 активной сессией одновременно |
Причины отключения
После открытия сессии она в конечном счёте завершится с одной из причин ниже — зафиксированных в /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 reset или аварийное закрытие) |