Padrão sms-activate

API de revenda de números virtuais

Venda números para receber SMS (WhatsApp, Telegram, Google, iFood e outros) no seu site, painel ou bot. A API segue o mesmo formato do sms-activate: se o seu sistema já funciona com outro fornecedor desse padrão, basta trocar o endereço e a chave. Cada compra sai do seu saldo no Flash SMS, com preço de revendedor.

Começo rápido

Em 3 passos

01

Crie a conta e recarregue

As compras feitas pela API usam o saldo da sua conta. Recarregue por Pix ou cartão no painel.

02

Gere sua chave

No painel, abra Minha conta → API de revenda e clique em Gerar minha chave. Guarde a chave: ela só aparece uma vez.

03

Configure seu sistema

Use o endereço abaixo com api_key e action. Pode ser GET ou POST.

GET / POST https://okgflpvrtyrohparffoy.supabase.co/functions/v1/reseller-api/stubs/handler_api.php
ParâmetroObrigatórioDescrição
api_keysimSua chave, gerada em Minha conta.
actionsimA ação desejada (veja abaixo).
servernão1 (padrão), 2 ou 3. São três fornecedores com estoques e preços diferentes, os mesmos do painel, mas com outra numeração: server=1 é o "Servidor 1" do painel, server=3 é o "Servidor 2" e server=2 é o "Servidor 3". Vale para getNumber e getPrices; nas outras ações o servidor é descoberto pelo id.
operatornãoSó no server=2, números do Brasil (country=73), em getNumber/getNumberV2. Operadora do número: claro, vivo, tim, oi, algartelecom, correios_celular, nlt ou any (padrão). Sem custo extra.
dddnãoSó no server=2, números do Brasil, em getNumber/getNumberV2. DDD do número, ex.: 11, 21, 31. Escolher DDD acrescenta 30% ao preço da ativação. Sem números com esse DDD/operadora, a resposta é NO_NUMBERS; DDD ou operadora inválidos dão BAD_ACTION.

Valores em reais (R$). As respostas são texto puro (ex.: ACCESS_BALANCE:50.00) ou JSON, igual ao padrão sms-activate.

Referência

Ações

getBalance

Saldo da sua conta
Requisição
?api_key=SUA_CHAVE&action=getBalance
Resposta
ACCESS_BALANCE:50.00

getPrices

Preços de revenda e estoque
Filtros opcionais: service, country e server. Sem filtro, devolve todos os serviços e países com estoque. cost é o preço que você paga por número, já com o desconto de revendedor.
Requisição
?api_key=SUA_CHAVE&action=getPrices
&service=wa&country=73
Resposta (JSON)
{ "73": { "wa": { "cost": 10.13, "count": 27852 } } }

getNumber

Compra um número
Parâmetros: service (código do serviço), country (padrão 73 = Brasil) e server. O valor é descontado do saldo na hora; se não sair número, nada é cobrado.
Requisição
?api_key=SUA_CHAVE&action=getNumber
&service=wa&country=73&server=1
Resposta
ACCESS_NUMBER:933749378:5511987654321
              id         número

getNumberV2

Mesma compra, resposta em JSON
Requisição
?api_key=SUA_CHAVE&action=getNumberV2
&service=wa&country=73
Resposta (JSON)
{
  "activationId": "933749378",
  "phoneNumber": "5511987654321",
  "activationCost": 10.13,
  "currency": "BRL",
  "countryCode": "73",
  "activationTime": "2026-10-05T14:25:32Z"
}

getStatus

Consulta se o SMS chegou
Consulte a cada 5 a 10 segundos até receber STATUS_OK ou STATUS_CANCEL.
  • STATUS_WAIT_CODE: aguardando o SMS
  • STATUS_OK:123456: código recebido
  • STATUS_WAIT_RETRY:123456: você pediu outro SMS (status=3); aguardando o novo código (o número após os dois-pontos é o código anterior)
  • STATUS_CANCEL: encerrado sem SMS (o valor já voltou para o seu saldo)
  • NO_ACTIVATION: id não encontrado na sua conta
Requisição
?api_key=SUA_CHAVE&action=getStatus
&id=933749378
Resposta
STATUS_OK:482913

setStatus

Cancela ou finaliza
  • status=8: cancelar. Sem SMS, o valor volta para o saldo: ACCESS_CANCEL. Antes de 2 minutos da compra: EARLY_CANCEL_DENIED. Se o SMS já chegou, o número é encerrado sem estorno: ACCESS_ACTIVATION.
  • status=6: finalizar depois de receber o código: ACCESS_ACTIVATION. Sem SMS: BAD_STATUS (use cancelar).
  • status=3: receber outro SMS no mesmo número, sem custo, dentro dos 20 minutos e depois do primeiro código: ACCESS_RETRY_GET. Continue com getStatus até vir o novo STATUS_OK. Se a operadora não liberar: BAD_STATUS.
  • status=1: avisar que o SMS foi enviado: ACCESS_READY.
Requisição
?api_key=SUA_CHAVE&action=setStatus
&id=933749378&status=8
Resposta
ACCESS_CANCEL

getServicesList · getCountries

Códigos de serviço e de país
Listas completas em JSON, com os códigos usados em service e country.

Códigos mais usados

ServiçoserviceServiçoservice
WhatsAppwaDiscordds
TelegramtgShopeeka
Google / YouTubegoiFoodpd
InstagramigUberub
Facebookfb99ki
TikToklfNetflixnf
Mercado Livre / PagocqPaís Brasilcountry=73
Como funciona

Regras das compras

20 minutos por número

Cada número fica disponível por 20 minutos para receber o SMS. Depois disso ele é encerrado.

Estorno automático

Se o SMS não chegar, o valor volta para o seu saldo automaticamente, mesmo que você não cancele.

Cancelamento após 2 minutos

O cancelamento só é aceito a partir de 2 minutos depois da compra. Antes disso a resposta é EARLY_CANCEL_DENIED.

Mesmo estoque do painel

A API compra dos mesmos fornecedores do site. Os servidores 1, 2 e 3 têm estoques e preços diferentes; se faltar número em um, tente outro.

Fluxo típico

Passo a passo
1. getNumber            → ACCESS_NUMBER:933749378:5511987654321
2. mostre o número ao seu cliente
3. getStatus a cada 5s  → STATUS_WAIT_CODE ... STATUS_OK:482913
   outro código? setStatus status=3 → ACCESS_RETRY_GET, depois getStatus até o novo STATUS_OK
4. setStatus status=6   → ACCESS_ACTIVATION
   sem SMS? setStatus status=8 (após 2 min) → ACCESS_CANCEL, valor de volta ao saldo
Exemplos

Código pronto

exemplo.php
<?php
$api = 'https://okgflpvrtyrohparffoy.supabase.co/functions/v1/reseller-api/stubs/handler_api.php';
$key = 'SUA_CHAVE';

function flash($params) {
  global $api, $key;
  return trim(file_get_contents($api . '?' . http_build_query(['api_key' => $key] + $params)));
}

// 1. Compra um número de WhatsApp no Brasil
$r = flash(['action' => 'getNumber', 'service' => 'wa', 'country' => 73]);
if (strpos($r, 'ACCESS_NUMBER') !== 0) die("Erro: $r");
[, $id, $numero] = explode(':', $r);
echo "Número: $numero\n";

// 2. Espera o código (até 20 minutos)
for ($i = 0; $i < 240; $i++) {
  sleep(5);
  $st = flash(['action' => 'getStatus', 'id' => $id]);
  if (strpos($st, 'STATUS_OK') === 0) { echo 'Código: ' . explode(':', $st)[1]; flash(['action' => 'setStatus', 'id' => $id, 'status' => 6]); break; }
  if ($st === 'STATUS_CANCEL') { echo 'Expirou sem SMS (valor estornado)'; break; }
}
Respostas de erro

Erros possíveis

RespostaO que significa
BAD_KEYChave inválida, ausente ou trocada. Gere outra em Minha conta.
BAD_ACTIONAção desconhecida.
BAD_SERVICECódigo de serviço inválido.
NO_BALANCESaldo insuficiente na sua conta Flash SMS. Recarregue no painel.
NO_NUMBERSSem número disponível agora para esse serviço/país. Nada foi cobrado. Tente de novo ou use o outro servidor.
NO_ACTIVATIONId não encontrado na sua conta.
EARLY_CANCEL_DENIEDCancelamento antes de 2 minutos da compra.
BAD_STATUSStatus inválido, ou finalização pedida antes de chegar o SMS.
ERROR_SQLFalha temporária. Tente de novo em instantes.
Dúvidas

Perguntas frequentes

Quanto custa usar a API?

A API é grátis. Você paga só pelos números que comprar, com preço de revendedor. Consulte os valores atuais com getPrices.

Funciona com sistemas feitos para o sms-activate?

Sim. As ações e as respostas seguem o mesmo padrão. Normalmente basta trocar o endereço da API e a chave.

Perdi minha chave. E agora?

Por segurança a chave não pode ser exibida de novo. Gere uma nova em Minha conta; a anterior para de funcionar na hora.

Se o SMS não chegar, eu perco o valor?

Não. Sem SMS, o valor volta para o seu saldo automaticamente quando o número expira, ou na hora em que você cancela (a partir de 2 minutos).

Posso usar os números para qualquer finalidade?

Não. Os números servem para verificação de contas legítimas, conforme os termos de cada plataforma. É proibido o uso para fraude ou criação de contas em massa. Chaves usadas de forma abusiva são bloqueadas.