Guia · API e integrações

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.

Atualizado em 04/11/2026 · Leitura de 3 min

Em resumo
  • 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

  1. 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'].

  2. 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.

  3. 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.

  4. 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.

  5. 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.

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