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
| Endpoint | https://4snsplus.com/api/v2 |
| Método | POST |
| Formato da requisição | Campos de formulário (application/x-www-form-urlencoded, multipart) ou um corpo JSON |
| Resposta | JSON; erros também chegam como HTTP 200 com um campo error |
| Autenticação | Parâmetro key (sua chave de API) em toda requisição |
| Limite de requisições | 300 requisições por minuto por chave |
| Moeda | Dó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âmetro | Descrição |
|---|---|
| key | Sua chave de API |
| action | services |
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âmetro | Descrição |
|---|---|
| key | Sua chave de API |
| action | add |
| service | ID do serviço (service de services) |
| link | Link 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 |
| quantity | Quantidade (entre min e max). Não é necessária em Package e Custom Comments |
| comments | Só 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âmetro | Descrição |
|---|---|
| key | Sua chave de API |
| action | status |
| order | ID 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âmetro | Descrição |
|---|---|
| key | Sua chave de API |
| action | status |
| orders | Lista 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âmetro | Descrição |
|---|---|
| key | Sua chave de API |
| action | refill |
| order | ID do pedido |
Exemplo de resposta
{
"refill": 512
}Status da reposição (refill_status)
O status de uma solicitação de reposição.
| Parâmetro | Descrição |
|---|---|
| key | Sua chave de API |
| action | refill_status |
| refill | ID da reposição (refill da resposta de refill) |
Exemplo de resposta
{
"status": "Completed"
}Saldo (balance)
Seu saldo (USD, 6 casas decimais).
| Parâmetro | Descrição |
|---|---|
| key | Sua chave de API |
| action | balance |
Exemplo de resposta
{
"balance": "84.120000",
"currency": "USD"
}Valores de status do pedido
| Pending | Recebido. Sendo repassado, aguardando início, ou um operador está conferindo o resultado do repasse |
| In progress | Em entrega |
| Completed | Entregue por completo |
| Partial | Entregue em parte. A parte não entregue é reembolsada no seu saldo |
| Canceled | Não entregue. Reembolso total no seu saldo |
Valores de status da reposição
| Pending | Solicitação de reposição recebida |
| In progress | Reposição em entrega |
| Completed | Reposição entregue |
| Rejected | A 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 key | Chave ausente, incorreta ou substituída por uma nova |
| Too many requests | Mais de 300 requisições por minuto. Tente novamente em instantes |
| Incorrect action | O valor de action não está na lista acima |
| Add funds first | Pedido de uma conta cuja primeira recarga ainda não foi creditada |
| Incorrect service ID | Nenhum serviço disponível com esse ID |
| Incorrect link | Link vazio ou que não é um endereço web |
| Quantity out of range | Abaixo da quantidade mínima ou acima da máxima |
| Incorrect comments | Custom Comments vazio ou acima de 10,000 linhas ou 500 caracteres por linha |
| Not enough funds on balance | Saldo menor que o valor do pedido. Recarregue e peça de novo |
| Incorrect order ID | Esse ID de pedido não é da sua conta |
| Refill is not available for this service | O serviço não tem período de reposição |
| Order is not finished yet | A reposição fica disponível quando o pedido está Completed ou Partial |
| Refill period has ended | O período de reposição, contado a partir do término do pedido, já passou |
| Refill already requested | Este pedido já tem uma solicitação de reposição aberta |
| Refill already requested, try again later | Ainda não se passaram 24 horas desde a última solicitação |
| Incorrect refill ID | Esse 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.
