Documentation
Riferimento API
Endpoint API REST per gestione quota, tracciamento utilizzo e cronologia sessioni
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();Autenticazione
Tutti gli endpoint API richiedono autenticazione Bearer token
# All API endpoints require Bearer token authentication
curl -H "Authorization: Bearer your-user-token-here" \
https://cloud.bots.win/api/quotaGET /api/quota
Verifica quota rimanente prima di lanciare job
/api/quotaResponse: Restituisce quota totale, utilizzata, rimanente e percentuale utilizzata
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/quotaGET /api/usage
Ottieni statistiche utilizzo per reporting e analisi costo
/api/usageResponse: Restituisce sessioni totali, minuti totali e conteggio sessioni attive
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/usageGET /api/history
Recupera cronologia sessioni per piste audit
/api/historyParameters: Parametri query start e end opzionali (timestamp ISO 8601)
Response: Restituisce array di oggetti sessione con durata e motivi disconnessione
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/historyPOST /api/user-data
Crea un nuovo container User Data per stato browser persistente (cookie, localStorage, ecc.)
/api/user-dataResponse: Restituisce ID User Data creato e timestamp
curl -X POST -H "Authorization: Bearer your-token" https://cloud.bots.win/api/user-dataGET /api/user-data
Elenca tutti i container User Data per l'utente autenticato
/api/user-dataResponse: Restituisce array di oggetti User Data con informazioni quota
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/user-dataDELETE /api/user-data/:id
Cancella un container User Data e rilascia quota
/api/user-data/:idResponse: Restituisce stato di successo
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();Modello Fatturazione
I piani di abbonamento includono ore browser mensili. Una volta esaurite, l'utilizzo aggiuntivo viene addebitato dal tuo saldo prepagato alla tariffa overage del piano.
Errori di Connessione
Questi errori si verificano durante la configurazione della connessione — la sessione non viene mai creata, quindi non apparirà in /api/history. Controlla lo stato HTTP e il messaggio nel corpo della risposta per gestirli.
| HTTP Status | Cause |
|---|---|
| 400 | Il parametro query --proxy-server è mancante o malformato |
| 401 | Il token è mancante o non valido |
| 401 | L'abbonamento non è attivo (nessun abbonamento, scaduto o periodo terminato) |
| 401 | Il token di prova è scaduto o la sua quota è esaurita |
| 403 | Il saldo dell'account è esaurito — nessuna ora di abbonamento residua e saldo a zero |
| 429 | Gli account di prova sono limitati a 1 sessione attiva alla volta |
Motivi Disconnessione
Una volta aperta una sessione, si concluderà prima o poi con uno dei motivi seguenti — registrati in /api/history. Usa questi codici per la gestione degli errori e i trail di audit.
| Code | Description |
|---|---|
| socket_close | Il client ha chiuso la connessione (es. browser.close() o uscita dal processo) — caso più comune, completamento normale |
| idle_timeout | Nessuna attività dal client per un periodo prolungato — sessione terminata dal gateway |
| browser_close_graceful | Il browser si è chiuso da solo (es. window.close() chiamato dall'interno della pagina) |
| trial_exhausted | La quota del token di prova è stata esaurita durante la sessione |
| primary_blocked:Insufficient balance | Il saldo dell'account è esaurito a metà sessione — il gateway ha chiuso la sessione |
| primary_blocked:Subscription lapsed or expired | L'abbonamento è scaduto o è diventato inattivo a metà sessione |
| browser_disconnect | Il browser si è disconnesso dal gateway — è sicuro riprovare |
| browser_crash | Il processo del browser è andato in crash — è sicuro riprovare |
| gateway_crash | Il gateway è stato riavviato — la tua sessione è stata terminata, è sicuro riprovare |
| socket_error | Errore a livello di rete (TCP reset o chiusura anomala) |