Pular para o conteúdo

Técnico

O padrão da API v2 de painel SMM

Atualizado em pela Equipe editorial do PanelCompare · 6 min de leitura

O que é a API v2 de painel SMM?

É um único endpoint POST, por convenção em /api/v2, que recebe um corpo application/x-www-form-urlencoded e devolve JSON. A autenticação é um parâmetro key no corpo, e não num cabeçalho. Não há negociação de versão, assinatura de requisição nem nonce (especificação verificada em justanotherpanel.com/api, 6 de setembro de 2026).

A especificação nasceu nos scripts de painel dominantes e foi copiada tão amplamente que virou o padrão de fato do setor. Esse é o fato por trás de quase tudo o mais neste mercado: dá para lançar um painel numa tarde apontando um script para a API de um fornecedor, e é por isso que existem milhares de painéis e que a diferença entre eles é pequena.

A chave é um segredo de portador de longa duração

Como a chave de API viaja no corpo da requisição, sem assinatura, nonce ou carimbo de tempo, não há proteção contra reutilização nem validade prevista na especificação. Quem tiver a chave pode gastar o seu saldo e ler todos os links para os quais você já fez pedidos. Troque a chave depois de conectar qualquer ferramenta de terceiros.

Quais ações a API oferece?

O conjunto completo de ações
AçãoParâmetrosRetorno
serviceskey, actionLista de itens do catálogo: service, name, type, category, rate, min, max, refill, cancel
addkey, action, service, link, mais os parâmetros do tipo de pedidoO id do novo pedido
statuskey, action, ordercharge, start_count, status, remains, currency
status (vários)key, action, orders (separados por vírgula, máx. 100)Um objeto indexado pelo id do pedido
refillkey, action, order (ou orders, separados por vírgula)Um id de reposição, ou uma lista de pares pedido/reposição
refill_statuskey, action, refill (ou refills, separados por vírgula)O status da reposição
cancelkey, action, orders (separados por vírgula)Resultado do cancelamento de cada pedido
balancekey, actionbalance e currency

Fonte: Especificação da SMM Panel API v2, verificada em justanotherpanel.com/api, 6 de setembro de 2026.

Repare que não existe uma ação multi_status separada na especificação canônica. O status de vários pedidos é a mesma ação status com o parâmetro no plural, orders, limitado a 100 ids por requisição, um detalhe que derruba a maioria das primeiras integrações.

Como são, na prática, uma requisição e uma resposta?

Listando o catálogo
POST /api/v2
Content-Type: application/x-www-form-urlencoded

key=YOUR_KEY&action=services

// 200 OK
[
  {
    "service": 1,
    "name": "Followers",
    "type": "Default",
    "category": "First Category",
    "rate": "0.90",
    "min": "50",
    "max": "10000",
    "refill": true,
    "cancel": true
  }
]
Fazendo um pedido e lendo o status
POST /api/v2
key=YOUR_KEY&action=add&service=1&link=https://example.com/p&quantity=1000

// 200 OK
{ "order": 23501 }

POST /api/v2
key=YOUR_KEY&action=status&order=23501

// 200 OK
{
  "charge": "0.27819",
  "start_count": "3572",
  "status": "Partial",
  "remains": "157",
  "currency": "USD"
}

O campo rate é o preço por 1.000 na moeda da conta, devolvido como texto. Catálogos reais têm de 3.000 a 8.000 itens, então uma chamada services é uma única resposta grande, e não uma resposta paginada.

Quais armadilhas derrubam as primeiras integrações?

  • Erros costumam voltar com HTTP 200. Na maioria dos painéis, uma requisição que falhou volta como 200 com um objeto de erro no corpo, e alguns respondem a uma chave inválida com 401 e o mesmo formato de JSON, então não dá para confiar no código de status e todo cliente precisa ler o corpo para detectar a falha.
  • Números chegam como texto. rate, min, max, charge, start_count e remains são todos strings entre aspas; compará-los como números sem conversão dá errado em silêncio.
  • O status de vários pedidos é o parâmetro no plural, não uma ação separada, e o limite é de 100 ids.
  • A quantidade do drip-feed vale por execução. Uma chamada add com runs=10 entrega e cobra quantity × 10.
  • Os ids de serviço são locais de cada painel e podem mudar. Um painel pode redirecionar um id para outro fornecedor de origem, então ids guardados podem, sem aviso, passar a significar outra coisa.
  • refill e cancel só funcionam quando o item do catálogo os anuncia, e cancel em geral só antes de a entrega começar.

Quais parâmetros cada tipo de pedido exige?

Toda chamada add precisa de service e link. O que mais ela precisa é definido pelo campo type do item do catálogo, e não dá para adivinhar os requisitos. Esta tabela é a lista completa.

Tipos de pedido e os parâmetros adicionais de cada um
Tipo de pedidoParâmetros adicionais
Default / Drip-feedquantity, runs (opcional), interval (opcional, em minutos)
Custom Commentscomments (lista com um comentário por linha)
Custom Comments Packagecomments
Mentions (lista de usuários / hashtag / lista personalizada)quantity, usernames, hashtags
Mentions Hashtagquantity, hashtag (as contas a mencionar são coletadas da hashtag)
Mentions User Followersquantity, username (as contas a mencionar são coletadas dos seguidores desse usuário)
Mentions Media Likersquantity, media (URL)
Comment Likesquantity, username
Comment Repliesusername, comments
Pollquantity, answer_number
Subscriptionsusername, min, max, posts (opc.), delay, expiry (opc.), old_posts (opc.)
Invites from Groupsquantity, groups (um por linha)
Packagesó link; a quantidade é fixa
Web Trafficquantity, country, device, type_of_traffic, google_keyword ou referring_url

Fonte: Especificação da SMM Panel API v2, verificada em justanotherpanel.com/api, 6 de setembro de 2026.

Como construir uma integração com ela?

  1. 1.Trate toda resposta como sem tipo. Leia o corpo primeiro, verifique se há uma chave error e depois converta explicitamente os números que vêm como texto.
  2. 2.Guarde o id de serviço do painel junto com o seu próprio serviço padronizado e sincronize o catálogo em intervalos fixos, para que um id redirecionado seja detectado, e não presumido.
  3. 3.Agrupe as consultas de status com o parâmetro orders no plural, em blocos de 100, em vez de uma requisição por pedido.
  4. 4.Trate Partial como um resultado normal, não como erro. Ele vem com um valor em remains e um crédito automático no saldo.
  5. 5.Nunca grave o corpo da requisição em log. A chave de API está nele.
  6. 6.Troque as chaves em intervalos fixos e depois de cada mudança numa integração de terceiros.

O que a API revela sobre um painel?

Mais do que o texto de marketing. Acessar /api/v2 sem chave devolve uma resposta de erro válida se existir um endpoint compatível com a API v2, e um 404 desmente a alegação do painel de que tem API, uma verificação rápida e objetiva que qualquer pessoa pode fazer.

Ela também é o único jeito escalável de coletar preços comparáveis. A maioria dos painéis esconde o catálogo atrás do cadastro e só publica texto de marketing, então coletar as páginas públicas cobre uma minoria do mercado. Criar uma conta e chamar a ação services devolve o catálogo inteiro em JSON estruturado numa única requisição, e é assim que o PanelCompare monta o seu índice de preços.

Respostas rápidas

O que é a API v2 de painel SMM?

Um único endpoint POST, por convenção em /api/v2, que recebe parâmetros como formulário e devolve JSON, com as ações services, add, status, refill, refill_status, cancel e balance. Quase todo painel a implementa, então um mesmo cliente funciona em centenas deles.

Como autenticar na API de um painel SMM?

Com um parâmetro key no corpo da requisição. Não há autenticação por cabeçalho, assinatura de requisição nem nonce, então a chave é um segredo de portador de longa duração e deve ser trocada depois de qualquer mudança numa integração de terceiros.

Por que a API devolve 200 quando dá erro?

Porque a especificação não usa os códigos de status HTTP de forma significativa. As falhas costumam voltar como HTTP 200 com um objeto de erro no corpo, e alguns painéis usam 401 com o mesmo corpo para uma chave inválida, então todo cliente precisa ler o corpo da resposta para detectar a falha.

Como consultar o status de vários pedidos de uma vez?

Use a mesma ação status com o parâmetro orders no plural, com até 100 ids de pedido separados por vírgula. Não existe uma ação multi_status separada na especificação canônica.

Cada número aqui tem fonte e data

Os preços deste mercado mudam toda semana; então, um número sem data de coleta é decoração. Quando este guia cita um número, ele informa a fonte e quando foi conferido. Se algum estiver errado, o processo de correção descrito na página Quem somos tem meta de resposta de dois dias úteis, e as correções são publicadas com uma nota datada, em vez de remendadas em silêncio.