Documentation
Référence API
Endpoints API REST pour la gestion des quotas, le suivi d'utilisation et l'historique des sessions
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();Authentification
Tous les endpoints API nécessitent une authentification par 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
Vérifier le quota restant avant de lancer des travaux
/api/quotaResponse: Retourne le quota total, utilisé, restant et le pourcentage utilisé
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/quotaGET /api/usage
Obtenir les statistiques d'utilisation pour les rapports et l'analyse des coûts
/api/usageResponse: Retourne le nombre total de sessions, les minutes totales et le nombre de sessions actives
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/usageGET /api/history
Récupérer l'historique des sessions pour les pistes d'audit
/api/historyParameters: Paramètres de requête optionnels de début et fin (timestamps ISO 8601)
Response: Retourne un tableau d'objets de session avec durée et raisons de déconnexion
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/historyPOST /api/user-data
Créer un nouveau conteneur de données utilisateur pour l'état persistant du navigateur (cookies, localStorage, etc.)
/api/user-dataResponse: Retourne l'ID et l'horodatage des données utilisateur créées
curl -X POST -H "Authorization: Bearer your-token" https://cloud.bots.win/api/user-dataGET /api/user-data
Lister tous les conteneurs de données utilisateur pour l'utilisateur authentifié
/api/user-dataResponse: Retourne un tableau d'objets de données utilisateur avec informations de quota
curl -H "Authorization: Bearer your-token" https://cloud.bots.win/api/user-dataDELETE /api/user-data/:id
Supprimer un conteneur de données utilisateur et libérer le quota
/api/user-data/:idResponse: Retourne le statut de succès
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();Modèle de facturation
Les plans d'abonnement incluent des heures de navigateur mensuelles. Une fois épuisées, l'utilisation supplémentaire est facturée depuis votre solde prépayé au tarif overage du plan.
Erreurs de connexion
Ces erreurs surviennent lors de l'établissement de la connexion — la session n'est jamais créée et n'apparaît donc pas dans /api/history. Vérifiez le statut HTTP et le message dans le corps de la réponse pour les gérer.
| HTTP Status | Cause |
|---|---|
| 400 | Le paramètre de requête --proxy-server est manquant ou malformé |
| 401 | Le token est manquant ou invalide |
| 401 | L'abonnement n'est pas actif (pas d'abonnement, expiré ou période terminée) |
| 401 | Le token d'essai a expiré ou son quota est épuisé |
| 403 | Le solde du compte est épuisé — aucune heure d'abonnement restante et solde à zéro |
| 429 | Les comptes d'essai sont limités à 1 session active à la fois |
Raisons de déconnexion
Une fois une session ouverte, elle se terminera éventuellement par l'une des raisons ci-dessous — enregistrée dans /api/history. Utilisez ces codes pour la gestion des erreurs et les pistes d'audit.
| Code | Description |
|---|---|
| socket_close | Le client a fermé la connexion (p. ex. browser.close() ou fin du processus) — cas le plus courant, fin normale |
| idle_timeout | Aucune activité du client pendant une période prolongée — session terminée par le gateway |
| browser_close_graceful | Le navigateur s'est fermé lui-même (p. ex. window.close() appelé depuis la page) |
| trial_exhausted | Le quota de token d'essai a été épuisé pendant la session |
| primary_blocked:Insufficient balance | Le solde du compte s'est épuisé en cours de session — le gateway a fermé la session |
| primary_blocked:Subscription lapsed or expired | L'abonnement a expiré ou est devenu inactif en cours de session |
| browser_disconnect | Le navigateur s'est déconnecté du gateway — nouvelle tentative possible |
| browser_crash | Le processus du navigateur a planté — nouvelle tentative possible |
| gateway_crash | Le gateway a redémarré — votre session a été interrompue, nouvelle tentative possible |
| socket_error | Erreur au niveau réseau (TCP reset ou fermeture anormale) |