API de SMS em Python: comprar número e ler o código
Em Python, a API do Flash SMS cabe num script de poucas linhas com a biblioteca requests. Você monta uma função que envia api_key e action para o endereço da API, compra o número com getNumber e consulta getStatus em intervalo até o código chegar.
- Prepare o ambiente.
- Crie a função de chamada.
- Compre o número.
- Separe id e número.
- Espere o código.
Passo a passo
API de SMS em Python: comprar número e ler o código
Prepare o ambiente
Instale requests com pip install requests. Guarde a chave numa variável de ambiente, por exemplo FLASH_KEY, e leia com os.environ['FLASH_KEY'].
Crie a função de chamada
Uma função flash(**params) faz requests.get(API, params={'api_key': KEY, **params}, timeout=60) e devolve o .text.strip() da resposta.
Compre o número
Chame flash(action='getNumber', service='wa', country=73). Se a resposta não começar com ACCESS_NUMBER, pare e mostre o erro.
Separe id e número
Com _, id_, numero = r.split(':') você tem o id da ativação e o número com o 55 na frente.
Espere o código
Num for de até 240 voltas, use time.sleep(5) e flash(action='getStatus', id=id_). Ao começar com STATUS_OK, pegue o código com split(':')[1] e chame setStatus com status=6.
Como o script decide o que fazer
Todas as respostas são texto curto, então o script só precisa testar o começo da string com startswith. ACCESS_NUMBER indica compra feita. Durante a espera, STATUS_WAIT_CODE significa continuar. STATUS_OK traz o código. STATUS_CANCEL quer dizer que o tempo acabou sem SMS e o valor já voltou para o saldo, então o laço termina.
As 240 voltas de 5 segundos somam 20 minutos, o mesmo tempo que o número fica ativo. Não é preciso esperar mais que isso.
Variações úteis
- Resposta em JSON: use action='getNumberV2' e leia com .json(); os campos são activationId, phoneNumber, activationCost, currency, countryCode e activationTime.
- Saldo: flash(action='getBalance') devolve algo como ACCESS_BALANCE:50.00; separe pelo dois-pontos e converta com float.
- Preços: flash(action='getPrices', service='wa', country=73) devolve JSON com cost e count.
- Cancelar: flash(action='setStatus', id=id_, status=8), liberado a partir de 2 minutos.
Boas práticas em Python
Defina sempre timeout no requests para o script não travar se a rede cair. Trate exceções de conexão e repita a chamada quando a resposta for ERROR_SQL. Em servidores web, como Flask ou Django, não deixe a requisição do usuário presa no laço de espera: rode a consulta numa tarefa em segundo plano, como uma fila com Celery ou RQ, e grave o código no banco.
Nunca coloque a chave no código que vai para o GitHub. Se ela vazar, gere outra em Minha conta e a antiga para de funcionar na hora.
Dúvidas
Perguntas frequentes
Funciona com Python assíncrono?
Sim. A API é HTTP comum. Com httpx ou aiohttp, troque requests.get por uma chamada assíncrona e time.sleep por asyncio.sleep.
Preciso usar GET?
Não. A documentação aceita GET ou POST no mesmo endereço, com os mesmos parâmetros.
Onde está o código completo?
Na página da API de revenda, na aba Python da seção de exemplos, com o mesmo fluxo descrito aqui.
API e integrações
Continue lendo
API de SMS em Node.js: exemplo com fetch
fetch nativo, URLSearchParams e um laço com await.
API de SMS em PHP: comprar número e receber o código
http_build_query, file_get_contents e um laço com sleep.
Saldo para revendedores: como funciona o saldo usado pela API
Um saldo só para painel e API, debitado por número comprado.
Número virtual para agências de marketing: como organizar as contas dos clientes
Verificação sem o chip da equipe, contas em nome do cliente e acesso documentado.
Google Play Console: como verificar o telefone da conta de desenvolvedor
O número de contato do desenvolvedor é confirmado por código e precisa continuar seu.
API de revenda de números virtuais: como começar a revender
Padrão sms-activate, preços em reais e saldo por Pix.
Receba seu primeiro código hoje
Cadastro em menos de um minuto, recarga por Pix, cartão ou cripto e o SMS no painel. Se não chegar, o valor volta.
Criar conta grátis