Documentation
Referência de API
Endpoints REST para gerenciamento de cota, rastreamento de uso e histórico de sessão
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();Autenticação
Todos os endpoints de API requerem autenticação por 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
Verifique a cota restante antes de iniciar trabalhos
/api/quotaResponse: Retorna cota total, usada, restante e percentual usado
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/quotaGET /api/usage
Obtenha estatísticas de uso para relatórios e análise de custo
/api/usageResponse: Retorna total de sessões, minutos totais e contagem de sessões ativas
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/usageGET /api/history
Recupere o histórico de sessão para trilhas de auditoria
/api/historyParameters: Parâmetros de consulta opcionais de início e fim (timestamps ISO 8601)
Response: Retorna array de objetos de sessão com duração e motivos de desconexão
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/historyPOST /api/user-data
Crie um novo contêiner de Dados do Usuário para estado persistente do navegador (cookies, localStorage, etc.)
/api/user-dataResponse: Retorna o ID de Dados do Usuário criado e timestamp
curl -X POST -H "Authorization: Bearer your-token" https://cloud.bots.win/api/user-dataGET /api/user-data
Liste todos os contêineres de Dados do Usuário para o usuário autenticado
/api/user-dataResponse: Retorna array de objetos de Dados do Usuário com informações de cota
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/user-dataDELETE /api/user-data/:id
Exclua um contêiner de Dados do Usuário e libere cota
/api/user-data/:idResponse: Retorna status de sucesso
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 Faturamento
Os planos de assinatura incluem horas de navegador mensais. Após esgotá-las, o uso adicional é cobrado do seu saldo pré-pago à taxa overage do plano.
Erros de Conexão
Esses erros ocorrem durante a configuração da conexão — a sessão nunca é criada, portanto não aparecerá em /api/history. Verifique o status HTTP e a mensagem no corpo da resposta para tratá-los.
| HTTP Status | Cause |
|---|---|
| 400 | O parâmetro de consulta --proxy-server está ausente ou malformado |
| 401 | Token está ausente ou inválido |
| 401 | A assinatura não está ativa (sem assinatura, expirada ou período encerrado) |
| 401 | O token de avaliação expirou ou sua cota foi esgotada |
| 403 | Saldo da conta esgotado — sem horas de assinatura restantes e saldo é zero |
| 429 | Contas de avaliação são limitadas a 1 sessão ativa por vez |
Motivos de Desconexão
Uma vez que uma sessão foi aberta, ela eventualmente terminará com um dos motivos abaixo — registrados em /api/history. Use esses códigos para tratamento de erros e trilhas de auditoria.
| Code | Description |
|---|---|
| socket_close | O cliente fechou a conexão (ex.: browser.close() ou encerramento do processo) — mais comum, conclusão normal |
| idle_timeout | Sem atividade do cliente por um período prolongado — sessão encerrada pelo gateway |
| browser_close_graceful | O navegador se fechou sozinho (ex.: window.close() chamado de dentro da página) |
| trial_exhausted | A cota de token de avaliação foi esgotada durante a sessão |
| primary_blocked:Insufficient balance | O saldo da conta acabou no meio da sessão — o gateway encerrou a sessão |
| primary_blocked:Subscription lapsed or expired | A assinatura expirou ou ficou inativa no meio da sessão |
| browser_disconnect | O navegador se desconectou do gateway — seguro tentar novamente |
| browser_crash | O processo do navegador travou — seguro tentar novamente |
| gateway_crash | O gateway foi reiniciado — sua sessão foi encerrada, seguro tentar novamente |
| socket_error | Erro em nível de rede (TCP reset ou fechamento anormal) |