Documentation
Referencia API
Endpoints de API REST para gestión de cuota, seguimiento de uso e historial de sesiones
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();Autenticación
Todos los endpoints de API requieren autenticación con token Bearer
# All API endpoints require Bearer token authentication
curl -H "Authorization: Bearer your-user-token-here" \
https://cloud.bots.win/api/quotaGET /api/quota
Verifica cuota restante antes de lanzar trabajos
/api/quotaResponse: Retorna cuota total, usada, restante y porcentaje usado
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/quotaGET /api/usage
Obtén estadísticas de uso para informes y análisis de costos
/api/usageResponse: Retorna total de sesiones, minutos totales y conteo de sesiones activas
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/usageGET /api/history
Recupera historial de sesiones para auditoría
/api/historyParameters: Parámetros de consulta opcionales inicio y fin (timestamps ISO 8601)
Response: Retorna array de objetos de sesión con duración y razones de desconexión
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/historyPOST /api/user-data
Crea un nuevo contenedor de Datos de Usuario para estado persistente del navegador (cookies, localStorage, etc.)
/api/user-dataResponse: Retorna ID de Datos de Usuario creado y timestamp
curl -X POST -H "Authorization: Bearer your-token" https://cloud.bots.win/api/user-dataGET /api/user-data
Lista todos los contenedores de Datos de Usuario para el usuario autenticado
/api/user-dataResponse: Retorna array de objetos de Datos de Usuario con información de cuota
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/user-dataDELETE /api/user-data/:id
Elimina un contenedor de Datos de Usuario y libera cuota
/api/user-data/:idResponse: Retorna estado de éxito
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();Modelo de Facturación
Los planes de suscripción incluyen horas de navegador mensuales. Una vez agotadas, el uso adicional se descuenta de tu saldo prepago a la tarifa overage del plan.
Errores de Conexión
Estos errores ocurren durante la configuración de la conexión — la sesión nunca se crea, por lo que no aparecerá en /api/history. Comprueba el estado HTTP y el mensaje en el cuerpo de la respuesta para gestionarlos.
| HTTP Status | Cause |
|---|---|
| 400 | El parámetro de consulta --proxy-server falta o está mal formado |
| 401 | El token falta o no es válido |
| 401 | La suscripción no está activa (sin suscripción, caducada o período expirado) |
| 401 | El token de prueba ha expirado o su cuota se ha agotado |
| 403 | El saldo de la cuenta se agotó — no quedan horas de suscripción y el saldo es cero |
| 429 | Las cuentas de prueba están limitadas a 1 sesión activa a la vez |
Razones de Desconexión
Una vez que se ha abierto una sesión, eventualmente terminará con una de las razones a continuación — registradas en /api/history. Usa estos códigos para el manejo de errores y registros de auditoría.
| Code | Description |
|---|---|
| socket_close | El cliente cerró la conexión (p. ej. browser.close() o salida del proceso) — el más común, finalización normal |
| idle_timeout | Sin actividad del cliente durante un período prolongado — sesión finalizada por el gateway |
| browser_close_graceful | El navegador se cerró solo (p. ej. window.close() llamado desde dentro de la página) |
| trial_exhausted | La cuota de token de prueba se agotó durante la sesión |
| primary_blocked:Insufficient balance | El saldo de la cuenta se agotó a mitad de sesión — el gateway cerró la sesión |
| primary_blocked:Subscription lapsed or expired | La suscripción expiró o se volvió inactiva a mitad de sesión |
| browser_disconnect | El navegador se desconectó del gateway — es seguro reintentar |
| browser_crash | El proceso del navegador falló — es seguro reintentar |
| gateway_crash | El gateway se reinició — tu sesión fue terminada, es seguro reintentar |
| socket_error | Error a nivel de red (TCP reset o cierre anormal) |