La création manuelle de comptes est le goulot d'étranglement de toute opération à grande échelle. Lorsque vous avez besoin de plus de 100 créations par jour, le travail humain devient le premier poste de dépenses. Une API de numéros virtuels fait le pont entre le manuel et l'automatique : le script obtient un numéro, reçoit le SMS, extrait le code et termine la création de compte sans intervention humaine.

Architecture d'une création de compte automatisée

Flux de base

Chaque création de compte automatique suit les étapes suivantes :

  1. Le script demande un numéro virtuel via l'API (en indiquant le service et le pays)
  2. Le service renvoie le numéro et l'ID d'activation
  3. Le script saisit le numéro dans le formulaire d'inscription du service cible
  4. Le service cible envoie un SMS contenant le code OTP
  5. Le script interroge régulièrement l'API (polling) pour récupérer les SMS entrants
  6. L'API renvoie le code extrait du SMS
  7. Le script saisit le code et termine la création de compte
  8. Le script libère le numéro (ou attend son expiration)

Travailler avec l'API turbon : principaux points d'accès

Obtention d'un numéro

Première étape : demander un numéro disponible pour le service et le pays souhaités :

GET /api/getNumber?api_key=YOUR_KEY&service=telegram&country=ru Réponse : { "status": "success", "id": 12345678, "phone": "79991234567" }

Attente du SMS

Une fois le numéro transmis au service cible, on interroge l'API en boucle pour obtenir le code :

GET /api/getStatus?api_key=YOUR_KEY&id=12345678 Réponse (en attente) : {"status": "STATUS_WAIT_CODE"} Réponse (code reçu) : {"status": "STATUS_OK", "code": "12345"}

Confirmation de l'utilisation

GET /api/setStatus?api_key=YOUR_KEY&id=12345678&status=6 # status=6 : indique que le SMS a été reçu et que tout est OK

Exemples d'implémentation

Python : classe de base pour travailler avec l'API

import requests import time class TurbonAPI: BASE_URL = "https://turbon.rent/api" def __init__(self, api_key): self.api_key = api_key def get_number(self, service, country="ru"): r = requests.get(f"{self.BASE_URL}/getNumber", params={ "api_key": self.api_key, "service": service, "country": country }) data = r.json() if data["status"] == "success": return data["id"], data["phone"] raise Exception(f"Failed to get number: {data}") def wait_sms(self, activation_id, timeout=120, interval=5): deadline = time.time() + timeout while time.time() < deadline: r = requests.get(f"{self.BASE_URL}/getStatus", params={ "api_key": self.api_key, "id": activation_id }) data = r.json() if data["status"] == "STATUS_OK": return data["code"] if "CANCEL" in data["status"]: raise Exception("Activation cancelled") time.sleep(interval) raise TimeoutError(f"SMS not received in {timeout}s") def confirm(self, activation_id): requests.get(f"{self.BASE_URL}/setStatus", params={ "api_key": self.api_key, "id": activation_id, "status": 6 }) # Utilisation : turbon = TurbonAPI("your_api_key") act_id, phone = turbon.get_number("telegram") # ... création du compte Telegram avec le numéro phone ... code = turbon.wait_sms(act_id) # ... saisie du code code ... turbon.confirm(act_id)

JavaScript/Node.js : variante asynchrone

const axios = require('axios'); async function getNumber(apiKey, service, country = 'ru') { const { data } = await axios.get('https://turbon.rent/api/getNumber', { params: { api_key: apiKey, service, country } }); if (data.status !== 'success') throw new Error(data.status); return { id: data.id, phone: data.phone }; } async function waitSms(apiKey, id, timeout = 120000) { const deadline = Date.now() + timeout; while (Date.now() < deadline) { await new Promise(r => setTimeout(r, 5000)); const { data } = await axios.get('https://turbon.rent/api/getStatus', { params: { api_key: apiKey, id } }); if (data.status === 'STATUS_OK') return data.code; if (data.status.includes('CANCEL')) throw new Error('Cancelled'); } throw new Error('Timeout'); }

Création de comptes en parallèle

Le modèle Worker Pool

Pour créer 100 comptes en parallèle, on utilise le modèle du worker pool : N workers travaillent simultanément, chacun exécutant un cycle complet de création de compte. Avec N=10, le temps nécessaire pour créer 100 comptes est divisé par 10.

from concurrent.futures import ThreadPoolExecutor import time def register_account(turbon, service, registrar): act_id, phone = turbon.get_number(service) registrar.start_registration(phone) code = turbon.wait_sms(act_id) account = registrar.complete_registration(code) turbon.confirm(act_id) return account # Lancement en parallèle with ThreadPoolExecutor(max_workers=10) as executor: futures = [ executor.submit(register_account, turbon, "telegram", registrar) for _ in range(100) ] accounts = [f.result() for f in futures]

Gestion des erreurs et nouvelles tentatives

Erreurs courantes

ErreurCauseSolution NO_NUMBERSAucun numéro disponible pour ce service ou ce paysNouvelle tentative après 30 à 60 s ou changement de pays STATUS_CANCELLe SMS n'est pas arrivé, l'activation a été annuléeObtenir un nouveau numéro et recommencer BANNEDLe compte API est bloquéVérifier le solde et les limites TimeoutErrorLe SMS est arrivé après le délai d'attenteAugmenter le timeout et ajouter une nouvelle tentative

Exponential backoff

En cas d'erreur NO_NUMBERS, ne bombardez pas l'API : espacez vos requêtes par des pauses d'une durée croissante : 5 s → 10 s → 20 s → 40 s. Cela réduit la charge et augmente vos chances d'obtenir un numéro lorsque la demande est forte.

Intégration avec un navigateur antidetect

Playwright ou Selenium lance un profil de navigateur → le script obtient un numéro via l'API turbon → saisit le numéro dans le formulaire par automatisation du navigateur → récupère le code via l'API → le saisit dans le navigateur. Un cycle complet sans intervention humaine.

Point essentiel : entre l'obtention du numéro et la saisie du code SMS, il faut prévoir un délai de 5 à 30 secondes (pour imiter un utilisateur réel qui « lit le SMS »). Sans ce délai, certaines plateformes détectent l'automatisation.

Bonnes pratiques d'automatisation

  • Confirmez toujours l'utilisation du numéro (status=6) : cela aide à améliorer la qualité du pool
  • Ne demandez pas de numéro tant que le formulaire d'inscription n'est pas prêt à recevoir la saisie : le numéro risque d'expirer
  • Journalisez chaque activation avec son résultat, afin d'analyser le taux de réussite par service
  • Utilisez des pays différents selon les plateformes : cela réduit les schémas répétitifs
  • Ne dépassez pas une cadence raisonnable de requêtes vers l'API et respectez les rate limits

Conclusion

L'automatisation de la création de comptes via une API de numéros virtuels marque le passage d'un travail manuel à un processus évolutif. 10 lignes de code remplacent 10 minutes de travail manuel d'un opérateur. turbon.rent fournit une API pour obtenir automatiquement des numéros, recevoir des SMS et gérer les activations : tout ce qu'il faut pour l'intégrer à vos scripts et à vos pipelines.