O cadastro manual de contas é o gargalo de qualquer operação em escala. Quando você precisa de mais de 100 cadastros por dia, o trabalho humano vira o principal item de custo. A API de números virtuais é a ponte entre o manual e o automático: o script obtém um número, recebe o SMS, extrai o código e conclui o cadastro sem intervenção humana.

Arquitetura do cadastro automatizado

Fluxo básico

Cada cadastro automático passa pelas seguintes etapas:

  1. O script solicita um número virtual pela API (informando o serviço e o país)
  2. O serviço retorna o número e o ID da ativação
  3. O script insere o número no formulário de cadastro do serviço de destino
  4. O serviço de destino envia um SMS com o código OTP
  5. O script consulta periodicamente (polling) as SMS recebidas pela API
  6. A API retorna o código da SMS
  7. O script insere o código e conclui o cadastro
  8. O script libera o número (ou aguarda a expiração)

Trabalhando com a API da turbon: principais endpoints

Obtenção de número

O primeiro passo é solicitar um número disponível para o serviço e o país desejados:

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

Espera do SMS

Depois de enviar o número ao serviço de destino, faça polling para receber o código:

GET /api/getStatus?api_key=YOUR_KEY&id=12345678 Resposta (aguardando): {"status": "STATUS_WAIT_CODE"} Resposta (código recebido): {"status": "STATUS_OK", "code": "12345"}

Confirmação de uso

GET /api/setStatus?api_key=YOUR_KEY&id=12345678&status=6 # status=6 — informar que o SMS foi recebido e está tudo OK

Exemplos de implementação

Python: classe básica para trabalhar com a 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 }) # Uso: turbon = TurbonAPI("your_api_key") act_id, phone = turbon.get_number("telegram") # ... cadastro no Telegram com o número phone ... code = turbon.wait_sms(act_id) # ... inserção do código code ... turbon.confirm(act_id)

JavaScript/Node.js: versão assíncrona

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'); }

Cadastro em paralelo

Padrão Worker Pool

Para cadastrar 100 contas em paralelo, usa-se o padrão worker pool: N workers trabalham ao mesmo tempo, e cada um executa o ciclo completo de cadastro. Com N=10, o tempo para cadastrar 100 contas cai 10 vezes.

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 # Execução em paralelo 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]

Tratamento de erros e retry

Erros típicos

ErroCausaSolução NO_NUMBERSNão há números disponíveis para o serviço/paísTentar de novo em 30–60 s ou trocar de país STATUS_CANCELO SMS não chegou e a ativação foi canceladaObter um novo número e repetir BANNEDA conta da API está bloqueadaVerificar o saldo e os limites TimeoutErrorO SMS chegou depois do timeoutAumentar o timeout e adicionar retry

Exponential backoff

Em caso de erro NO_NUMBERS, não bombardeie a API: faça pausas com intervalos crescentes: 5 s → 10 s → 20 s → 40 s. Isso reduz a carga e aumenta a chance de obter um número em períodos de alta demanda.

Integração com navegador antidetect

O Playwright ou o Selenium abre um perfil de navegador → o script obtém um número pela API da turbon → insere o número no formulário por meio da automação do navegador → recebe o código pela API → insere no navegador. Um ciclo completo sem intervenção humana.

Ponto-chave: entre a obtenção do número e a inserção do código do SMS, deve haver um atraso de 5 a 30 segundos (simulando um usuário real que "lê o SMS"). Sem esse atraso, algumas plataformas detectam a automação.

Boas práticas na automação

  • Sempre confirme o uso do número (status=6) — isso ajuda a melhorar a qualidade do pool
  • Não solicite o número antes de o formulário de cadastro estar pronto para receber os dados — o número pode expirar
  • Registre em log cada ativação com o resultado — para analisar a taxa de sucesso por serviço
  • Use países diferentes para plataformas diferentes — isso reduz padrões
  • Não ultrapasse uma velocidade razoável de requisições à API — respeite os rate limits

Conclusão

Automatizar o cadastro pela API de números virtuais é a transição do trabalho manual para um processo escalável. 10 linhas de código substituem 10 minutos de trabalho manual de um operador. A turbon.rent oferece uma API para obter números automaticamente, receber SMS e gerenciar ativações — tudo o que você precisa para integrar aos seus scripts e pipelines.