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

GET /api/quota

Verifica cuota restante antes de lanzar trabajos

GET/api/quota

Response: Retorna cuota total, usada, restante y porcentaje usado

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

GET /api/usage

Obtén estadísticas de uso para informes y análisis de costos

GET/api/usage

Response: Retorna total de sesiones, minutos totales y conteo de sesiones activas

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

GET /api/history

Recupera historial de sesiones para auditoría

GET/api/history

Parameters: 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/history

POST /api/user-data

Crea un nuevo contenedor de Datos de Usuario para estado persistente del navegador (cookies, localStorage, etc.)

POST/api/user-data

Response: Retorna ID de Datos de Usuario creado y timestamp

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

GET /api/user-data

Lista todos los contenedores de Datos de Usuario para el usuario autenticado

GET/api/user-data

Response: 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-data

DELETE /api/user-data/:id

Elimina un contenedor de Datos de Usuario y libera cuota

DELETE/api/user-data/:id

Response: Retorna estado de éxito

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();

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 StatusCause
400El parámetro de consulta --proxy-server falta o está mal formado
401El token falta o no es válido
401La suscripción no está activa (sin suscripción, caducada o período expirado)
401El token de prueba ha expirado o su cuota se ha agotado
403El saldo de la cuenta se agotó — no quedan horas de suscripción y el saldo es cero
429Las 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.

CodeDescription
socket_closeEl cliente cerró la conexión (p. ej. browser.close() o salida del proceso) — el más común, finalización normal
idle_timeoutSin actividad del cliente durante un período prolongado — sesión finalizada por el gateway
browser_close_gracefulEl navegador se cerró solo (p. ej. window.close() llamado desde dentro de la página)
trial_exhaustedLa cuota de token de prueba se agotó durante la sesión
primary_blocked:Insufficient balanceEl saldo de la cuenta se agotó a mitad de sesión — el gateway cerró la sesión
primary_blocked:Subscription lapsed or expiredLa suscripción expiró o se volvió inactiva a mitad de sesión
browser_disconnectEl navegador se desconectó del gateway — es seguro reintentar
browser_crashEl proceso del navegador falló — es seguro reintentar
gateway_crashEl gateway se reinició — tu sesión fue terminada, es seguro reintentar
socket_errorError a nivel de red (TCP reset o cierre anormal)