Pontos principais
O formato de requisição da API v2 padrão de painel SMM, suas 6 actions, exemplos de resposta, mensagens de erro e limites de requisições, escrito para revendedores.
A API de um painel SMM é uma conexão que faz pedidos e confere o status deles automaticamente a partir de outro painel ou do seu próprio software. O 1PANEL PLUS usa a API v2 padrão de painel SMM, então, se você já tem um código conectado a outro painel, basta trocar o endereço e a chave para conectar na hora. A API e o site usam os mesmos serviços, os mesmos preços por 1,000 e o mesmo saldo.
Quem usa a API de um painel SMM?
- Revendedores: listam serviços no próprio painel e repassam os pedidos dos clientes automaticamente
- Agências: fazem pedidos para muitos canais de uma vez em horários definidos
- Desenvolvedores: criam scripts que fazem pedidos quando uma transmissão começa ou um vídeo novo é publicado
- Operadores: reúnem saldo e status dos pedidos no próprio painel de controle
Como consigo uma chave de API?
Crie uma na tela Chave de API do seu painel depois que sua primeira recarga for creditada. A chave é mostrada apenas uma vez, no momento em que você a cria, então copie-a na hora e guarde-a em um lugar seguro. Ao criar uma nova chave, a chave antiga para de funcionar imediatamente; se você achar que uma chave foi exposta, basta criar uma nova para substituí-la.
Como envio requisições à API?
Envie todas as requisições por POST para o endereço único https://1panelplus.com/api/v2. Use o formato que preferir, campos de formulário (application/x-www-form-urlencoded ou multipart) ou corpo JSON (Content-Type: application/json), e inclua key e action em todas as requisições. Todas as respostas são em JSON.
Exemplo de requisição (campos de formulário): key=YOUR_API_KEY&action=balance
Exemplo de requisição (JSON): {"key": "YOUR_API_KEY", "action": "balance"}
| action | Valores a enviar | Valores retornados |
|---|---|---|
| services | Nenhum | Lista de serviços |
| add | service, link, quantity ou comments | order (ID do pedido) |
| status | Um order, ou orders (até 100, separados por vírgula) | charge, start_count, status, remains, currency |
| refill | order | refill (ID da reposição) |
| refill_status | refill | status |
| balance | Nenhum | balance, currency |
- action
- services
- Valores a enviar
- Nenhum
- Valores retornados
- Lista de serviços
- action
- add
- Valores a enviar
- service, link, quantity ou comments
- Valores retornados
- order (ID do pedido)
- action
- status
- Valores a enviar
- Um order, ou orders (até 100, separados por vírgula)
- Valores retornados
- charge, start_count, status, remains, currency
- action
- refill
- Valores a enviar
- order
- Valores retornados
- refill (ID da reposição)
- action
- refill_status
- Valores a enviar
- refill
- Valores retornados
- status
- action
- balance
- Valores a enviar
- Nenhum
- Valores retornados
- balance, currency
Como obtenho a lista de serviços com services?
Envie action=services e você recebe todos os serviços à venda em um array. Cada serviço inclui service (ID do serviço), name, type, category, rate, min, max, refill e cancel. rate é o preço por 1,000 (USD); quando type é Package, é o preço de um pacote. refill é true para serviços com período de reposição, e cancel é sempre false. category traz o nome da plataforma e a categoria juntos, então você pode recriar as categorias no seu próprio painel do jeito que estão.
Exemplo de resposta: [{"service": SERVICE_ID, "name": "Nome do serviço", "type": "Default", "category": "YouTube - Nome da categoria", "rate": "Preço por 1,000", "min": "Quantidade mínima", "max": "Quantidade máxima", "refill": true, "cancel": false}]
Preços e serviços podem mudar, então, como revendedor, é uma boa ideia buscar services de novo em um intervalo definido e manter sincronizados os preços e as quantidades mínima e máxima do seu painel.
Como faço um pedido com add?
Envie action=add com service (ID do serviço), link (link público) e quantity, e o pedido é feito e o valor é descontado do seu saldo na hora. O order na resposta é o ID do pedido; guarde-o e use-o em status e refill. Os pedidos podem ser feitos por contas cuja primeira recarga já foi creditada.
- Serviços comuns: envie service, link e quantity
- Serviços Custom Comments: envie comments em vez de quantity. Um comentário por linha, até 500 caracteres por linha, e o número de linhas é a quantidade
- Serviços Package: não é preciso enviar quantidade. O pedido é de um pacote
Exemplo de requisição: key=YOUR_API_KEY&action=add&service=SERVICE_ID&link=https://www.youtube.com/watch?v=videoid&quantity=1000
Exemplo de resposta: {"order": ORDER_ID}
Como confiro o status de um pedido com status?
Envie action=status com order (um único ID de pedido) para receber o status desse pedido, ou envie orders com IDs de pedidos separados por vírgulas para consultar até 100 de uma vez. Se você gerencia muitos pedidos, agrupá-los com orders economiza muitas requisições.
Exemplo de resposta (um pedido): {"charge": "Valor cobrado", "start_count": "Contagem inicial", "status": "In progress", "remains": "Quantidade restante", "currency": "USD"}
Exemplo de resposta (vários pedidos): {"ORDER_ID_1": {"charge": "...", "start_count": "...", "status": "Completed", "remains": "0", "currency": "USD"}, "ORDER_ID_2": {"error": "Incorrect order ID"}}
| Valor de status | Significado |
|---|---|
| Pending | Recebido e aguardando para começar, ou passando para o processamento |
| In progress | Em entrega |
| Completed | Totalmente entregue |
| Partial | Uma parte foi entregue e o restante do valor voltou para o seu saldo |
| Canceled | Não pôde ser processado e o valor total voltou para o seu saldo |
- Valor de status
- Pending
- Significado
- Recebido e aguardando para começar, ou passando para o processamento
- Valor de status
- In progress
- Significado
- Em entrega
- Valor de status
- Completed
- Significado
- Totalmente entregue
- Valor de status
- Partial
- Significado
- Uma parte foi entregue e o restante do valor voltou para o seu saldo
- Valor de status
- Canceled
- Significado
- Não pôde ser processado e o valor total voltou para o seu saldo
charge é o valor pago menos qualquer valor reembolsado, então, depois de um pedido parcial ou cancelado, você vê na hora o valor realmente gasto. Os status dos pedidos são atualizados automaticamente a cada minuto, aproximadamente, então consultar status em intervalos de cerca de um minuto é mais que suficiente.
Como uso refill e refill_status?
Envie action=refill com order para pedir uma reposição, e você recebe refill (o ID da reposição). Ela é aceita para pedidos concluídos ou concluídos parcialmente de serviços com período de reposição, dentro do período de reposição contado a partir do dia em que o pedido terminou, quando não há reposição em andamento e já se passaram 24 horas desde o último pedido de reposição. Envie action=refill_status com refill, e ele informa o status como Pending, In progress, Completed ou Rejected.
Exemplos de resposta: {"refill": REFILL_ID} e {"status": "Completed"}
As regras de reposição são as mesmas do site. As condições detalhadas estão em Períodos de reposição explicados.
Como confiro o meu saldo com balance?
Envie action=balance e você recebe o seu saldo atual e a moeda (USD). Como revendedor, confira o saldo antes de repassar os pedidos e configure um alerta para quando ele ficar abaixo de um valor definido, para que os seus pedidos sigam sem interrupção.
Exemplo de resposta: {"balance": "Saldo atual", "currency": "USD"}
O que significam as mensagens de erro da API?
Os erros voltam como JSON com uma frase em inglês no campo error. Cada frase tem uma causa fixa, então o seu software pode compará-la como está e tratá-la.
| Valor de error | Significado |
|---|---|
| Invalid API key | A chave está ausente ou incorreta |
| Too many requests | Você passou do limite de requisições por minuto. Envie de novo em instantes |
| Add funds first | Você pode fazer pedidos depois que a sua primeira recarga for creditada |
| Incorrect service ID | Não é o ID de um serviço à venda |
| Incorrect link | O formato do link não é válido |
| Quantity out of range | A quantidade está fora do intervalo mínimo e máximo do serviço |
| Incorrect comments | As linhas de comentário estão vazias ou uma linha tem mais de 500 caracteres |
| Not enough funds on balance | Seu saldo é menor que o valor do pedido |
| Incorrect order ID | Não é um ID de pedido desta conta |
| Incorrect refill ID | Não é um ID de reposição desta conta |
| Incorrect action | O valor de action não é uma das 6 actions |
- Valor de error
- Invalid API key
- Significado
- A chave está ausente ou incorreta
- Valor de error
- Too many requests
- Significado
- Você passou do limite de requisições por minuto. Envie de novo em instantes
- Valor de error
- Add funds first
- Significado
- Você pode fazer pedidos depois que a sua primeira recarga for creditada
- Valor de error
- Incorrect service ID
- Significado
- Não é o ID de um serviço à venda
- Valor de error
- Incorrect link
- Significado
- O formato do link não é válido
- Valor de error
- Quantity out of range
- Significado
- A quantidade está fora do intervalo mínimo e máximo do serviço
- Valor de error
- Incorrect comments
- Significado
- As linhas de comentário estão vazias ou uma linha tem mais de 500 caracteres
- Valor de error
- Not enough funds on balance
- Significado
- Seu saldo é menor que o valor do pedido
- Valor de error
- Incorrect order ID
- Significado
- Não é um ID de pedido desta conta
- Valor de error
- Incorrect refill ID
- Significado
- Não é um ID de reposição desta conta
- Valor de error
- Incorrect action
- Significado
- O valor de action não é uma das 6 actions
Os pedidos de reposição podem retornar Refill is not available for this service (o serviço não tem período de reposição), Order is not finished yet (o pedido ainda não terminou), Refill period has ended (o período de reposição já passou) ou Refill already requested, try again later (há uma reposição em andamento ou ainda não se passaram 24 horas).
Quantas requisições à API posso enviar?
Cada chave pode fazer até 300 requisições por minuto. Agrupe as consultas de status em lotes de 100 com orders e busque a lista de serviços de novo só quando precisar, e você terá folga de sobra. Por exemplo, com 1,000 pedidos em andamento, 10 requisições uma vez por minuto conferem todos eles.
Como os revendedores definem os preços de venda?
O rate que você recebe pela API é o preço por 1,000 do 1PANEL PLUS, e os revendedores definem eles mesmos o preço de venda no próprio painel. Por exemplo, se você adicionar 25% a um serviço com rate de $2.00, você vende a $2.50 por 1,000; quando um cliente pede 4,000, a sua venda é $10.00 e $8.00 é descontado no 1PANEL PLUS. Esses preços são exemplos para mostrar o cálculo.
Em que ordem devo configurar a conexão com a API?
- Adicione saldo e crie uma chave de API no seu painel
- Confira a chave e a conexão com balance
- Busque a lista de serviços com services e liste-os no seu painel
- Envie um add com a menor quantidade e receba um ID de pedido
- Confirme com status que o status muda e depois ative os pedidos automáticos
Exemplos em curl, PHP, Python e Node.js e a descrição completa dos campos estão na documentação da API, e outras dúvidas estão no grupo API das Perguntas frequentes.