Pular para o conteúdo
4SNS PLUS

Painel SMM API: documentação

Painel SMM com API v2 padrão: peça os serviços da 4SNS PLUS pelo seu bot de Telegram ou pelo seu próprio painel.

O que é a API de um painel SMM?

A API de um painel SMM permite que um programa obtenha a lista de serviços, faça pedidos e consulte o status dos pedidos e o saldo sem passar pelo site. A 4SNS PLUS suporta o formato padrão de API v2 para painéis SMM usado por muitos painéis e bots, então o código que você já conectou a outro painel funciona na hora, bastando trocar a URL e a chave.

Os preços e o saldo da API são os mesmos do site. O rate na resposta de services é igual ao preço por 1,000 (dólares americanos) da tabela de preços, e os pedidos feitos com add são descontados do seu saldo exatamente como os pedidos pelo site e também aparecem no histórico de pedidos do seu painel. Valores devolvidos de pedidos cancelados ou parciais voltam para o mesmo saldo.

Informações básicas

Endpointhttps://4snsplus.com/api/v2
MétodoPOST
Formato da requisiçãoCampos de formulário (application/x-www-form-urlencoded, multipart) ou um corpo JSON
RespostaJSON; erros também chegam como HTTP 200 com um campo error
AutenticaçãoParâmetro key (sua chave de API) em toda requisição
Limite de requisições300 requisições por minuto por chave
MoedaDólar americano (USD)

Exemplo de requisição

curl -X POST https://4snsplus.com/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=balance
import requests

r = requests.post("https://4snsplus.com/api/v2", data={
    "key": "YOUR_API_KEY",
    "action": "add",
    "service": 2210,
    "link": "https://t.me/yourchannel",
    "quantity": 1000,
})
print(r.json())  # {"order": 31877} or {"error": "..."}

Como obter uma chave de API?

Assim que sua primeira recarga for creditada no saldo, você pode criar uma chave de API no menu Chave de API do seu painel. A chave aparece uma única vez ao ser criada, então guarde em um lugar seguro. Ao criar uma nova chave, a anterior é desativada na hora.

A chave é diferente do token da sua conta. Coloque apenas a chave de API no seu bot ou servidor, nunca o token da conta. Se achar que sua chave vazou, basta criar uma nova na tela Chave de API.

Lista de serviços (services)

Retorna todos os serviços que você pode pedir. rate é o preço por 1,000 (USD) e, quando type é Package, é o preço de um pacote. Quando type é Custom Comments, você envia uma lista de comentários em vez de uma quantidade. category é o nome da plataforma mais o nome do grupo.

ParâmetroDescrição
keySua chave de API
actionservices

Exemplo de resposta

[
  {
    "service": 2210,
    "name": "Members - 30 Days Non Drop - 30 Days Refill",
    "type": "Default",
    "category": "Telegram - Members (30 Days Non Drop)",
    "rate": "1.4300",
    "min": "100",
    "max": "50000",
    "refill": true,
    "cancel": false
  }
]

Criar um pedido (add)

Cria um pedido e desconta o valor do seu saldo. O valor é o preço por 1,000 vezes a quantidade; em Package é o preço do pacote e, em Custom Comments, a quantidade é o número de linhas de comentário. Pedidos ficam disponíveis em contas com a primeira recarga creditada. O order na resposta é o ID do seu pedido.

ParâmetroDescrição
keySua chave de API
actionadd
serviceID do serviço (service de services)
linkLink público. Para Telegram: t.me/name, link de convite privado t.me/+code, post t.me/name/123, bot t.me/botname. @name também é aceito
quantityQuantidade (entre min e max). Não é necessária em Package e Custom Comments
commentsSó Custom Comments. Um comentário por linha, até 10,000 linhas e até 500 caracteres por linha

Exemplo de resposta

{
  "order": 31877
}

Status do pedido (status)

O status de um pedido. charge é o valor realmente pago após reembolsos (USD, 6 casas decimais), start_count é a contagem no início do pedido e remains é a quantidade ainda não entregue.

ParâmetroDescrição
keySua chave de API
actionstatus
orderID do pedido

Exemplo de resposta

{
  "charge": "1.430000",
  "start_count": "8120",
  "status": "In progress",
  "remains": "410",
  "currency": "USD"
}

Status de vários pedidos (status, orders)

Consulta até 100 pedidos de uma vez, com os IDs separados por vírgula. IDs que não existem ou não são da sua conta recebem um erro no lugar.

ParâmetroDescrição
keySua chave de API
actionstatus
ordersLista de IDs de pedido, por exemplo 1,10,100

Exemplo de resposta

{
  "1": { "charge": "0.300000", "start_count": "120", "status": "Completed", "remains": "0", "currency": "USD" },
  "10": { "error": "Incorrect order ID" }
}

Solicitar reposição (refill)

Para um pedido de serviço com período de reposição que terminou como Completed ou Partial, solicite dentro do período de reposição contado a partir do término. Cada pedido pode ter uma solicitação aberta, com 24 horas entre solicitações.

ParâmetroDescrição
keySua chave de API
actionrefill
orderID do pedido

Exemplo de resposta

{
  "refill": 512
}

Status da reposição (refill_status)

O status de uma solicitação de reposição.

ParâmetroDescrição
keySua chave de API
actionrefill_status
refillID da reposição (refill da resposta de refill)

Exemplo de resposta

{
  "status": "Completed"
}

Saldo (balance)

Seu saldo (USD, 6 casas decimais).

ParâmetroDescrição
keySua chave de API
actionbalance

Exemplo de resposta

{
  "balance": "84.120000",
  "currency": "USD"
}

Valores de status do pedido

PendingRecebido. Sendo repassado, aguardando início, ou um operador está conferindo o resultado do repasse
In progressEm entrega
CompletedEntregue por completo
PartialEntregue em parte. A parte não entregue é reembolsada no seu saldo
CanceledNão entregue. Reembolso total no seu saldo

Valores de status da reposição

PendingSolicitação de reposição recebida
In progressReposição em entrega
CompletedReposição entregue
RejectedA solicitação de reposição não foi aceita

Mensagens de erro

Erros chegam como JSON com um campo error em uma resposta HTTP 200. No seu código, verifique primeiro o campo error.

{
  "error": "Not enough funds on balance"
}
Invalid API keyChave ausente, incorreta ou substituída por uma nova
Too many requestsMais de 300 requisições por minuto. Tente novamente em instantes
Incorrect actionO valor de action não está na lista acima
Add funds firstPedido de uma conta cuja primeira recarga ainda não foi creditada
Incorrect service IDNenhum serviço disponível com esse ID
Incorrect linkLink vazio ou que não é um endereço web
Quantity out of rangeAbaixo da quantidade mínima ou acima da máxima
Incorrect commentsCustom Comments vazio ou acima de 10,000 linhas ou 500 caracteres por linha
Not enough funds on balanceSaldo menor que o valor do pedido. Recarregue e peça de novo
Incorrect order IDEsse ID de pedido não é da sua conta
Refill is not available for this serviceO serviço não tem período de reposição
Order is not finished yetA reposição fica disponível quando o pedido está Completed ou Partial
Refill period has endedO período de reposição, contado a partir do término do pedido, já passou
Refill already requestedEste pedido já tem uma solicitação de reposição aberta
Refill already requested, try again laterAinda não se passaram 24 horas desde a última solicitação
Incorrect refill IDEsse ID de reposição não é da sua conta

Como conectar a API de um painel SMM a um bot de Telegram?

1. Salve a lista de serviços

Chame services algumas vezes por dia e salve nos seus próprios dados o ID, o nome, o rate, o min e o max de cada serviço. Calcule o preço que você mostra aos clientes somando sua margem ao rate e use o ID de serviço salvo do jeito que está ao fazer o pedido.

2. Confira quantidade e link antes de pedir

Conferir antes se a quantidade está entre min e max e se o link está no formato t.me reduz os erros Quantity out of range e Incorrect link. Também ajuda consultar o saldo com balance antes.

3. Consulte o status em lotes

Consulte os pedidos em andamento a cada poucos minutos em lotes de 100 com o parâmetro orders. Assim você fica com folga dentro do limite de 300 requisições por minuto por chave. Quando um pedido passar para Completed, Partial ou Canceled, avise o seu cliente do resultado.

4. Peça reposição só de pedidos concluídos

Quando um pedido de serviço com reposição passar para Completed ou Partial, você pode enviar refill. Salve o ID da reposição da resposta e acompanhe o andamento com refill_status.