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

GET /api/quota

Vérifier le quota restant avant de lancer des travaux

GET/api/quota

Response: Retourne le quota total, utilisé, restant et le pourcentage utilisé

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

GET /api/usage

Obtenir les statistiques d'utilisation pour les rapports et l'analyse des coûts

GET/api/usage

Response: 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/usage

GET /api/history

Récupérer l'historique des sessions pour les pistes d'audit

GET/api/history

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

POST /api/user-data

Créer un nouveau conteneur de données utilisateur pour l'état persistant du navigateur (cookies, localStorage, etc.)

POST/api/user-data

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

GET /api/user-data

Lister tous les conteneurs de données utilisateur pour l'utilisateur authentifié

GET/api/user-data

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

DELETE /api/user-data/:id

Supprimer un conteneur de données utilisateur et libérer le quota

DELETE/api/user-data/:id

Response: Retourne le statut de succès

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

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 StatusCause
400Le paramètre de requête --proxy-server est manquant ou malformé
401Le token est manquant ou invalide
401L'abonnement n'est pas actif (pas d'abonnement, expiré ou période terminée)
401Le token d'essai a expiré ou son quota est épuisé
403Le solde du compte est épuisé — aucune heure d'abonnement restante et solde à zéro
429Les 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.

CodeDescription
socket_closeLe client a fermé la connexion (p. ex. browser.close() ou fin du processus) — cas le plus courant, fin normale
idle_timeoutAucune activité du client pendant une période prolongée — session terminée par le gateway
browser_close_gracefulLe navigateur s'est fermé lui-même (p. ex. window.close() appelé depuis la page)
trial_exhaustedLe quota de token d'essai a été épuisé pendant la session
primary_blocked:Insufficient balanceLe solde du compte s'est épuisé en cours de session — le gateway a fermé la session
primary_blocked:Subscription lapsed or expiredL'abonnement a expiré ou est devenu inactif en cours de session
browser_disconnectLe navigateur s'est déconnecté du gateway — nouvelle tentative possible
browser_crashLe processus du navigateur a planté — nouvelle tentative possible
gateway_crashLe gateway a redémarré — votre session a été interrompue, nouvelle tentative possible
socket_errorErreur au niveau réseau (TCP reset ou fermeture anormale)