Pedidos
Fazer um pedido
Cria um pedido e cobra o valor em uma única etapa. A resposta é imediata: o pedido fica Pendente e pode ser cancelado de graça durante os primeiros 15 segundos. Envie seu próprio request_id para que uma nova tentativa nunca crie um segundo pedido.
https://notpanel.com/api/v3action=add- Chave de API obrigatória
- Limite de requisições atingido
- Corpo:
application/x-www-form-urlencoded
Parâmetros
Sempre enviado
keystringObrigatório- Sua chave de API.
actionstringObrigatórioaddDeve ser a string literal "add".
Pedido
serviceintegerObrigatório- ID do serviço da lista de serviços.
linkstringObrigatório- O link para o qual entregar. O que vale como válido depende do serviço.
quantityintegerDepende do tipo de serviço- Quantidade total. Com
runseinterval, é a quantidade por execução. Listas e reações exatas contam a própria quantidade, e pacotes têm uma quantidade fixa.
Novas tentativas
request_idstringOpcional- Seu próprio ID para este pedido, de até 128 caracteres. Repeti-lo com os mesmos parâmetros retorna o pedido original. Usá-lo com parâmetros diferentes retorna
REQUEST_ID_CONFLICT. idempotency_keystringOpcional- Alias de
request_id. Quando ambos são enviados,request_idprevalece.
Drip Feed
runsintegerOpcional- Drip feed clássico: o número de execuções, de 2 a 100.
runs=1é um pedido normal. intervalintegerOpcional- Drip feed clássico: minutos entre as execuções, de 1 a 1440.
drip_feed_total_minutesintegerOpcional- Drip feed simples: conclua toda a
quantitydentro deste número de minutos, de 1 a 2880. Não combine comrunseinterval.
Campos do serviço
reactionsstringOpcional- Reações do Telegram, por exemplo
👍,❤️,🔥ou👍:60,❤️:40. comments, usernames, answer_number, …Depende do tipo de serviço- Outros campos extras pelo nome do campo, como
comments,usernamesouanswer_number. A listafieldsdo serviço diz quais ele aceita.
curl -X POST https://notpanel.com/api/v3 \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "key=YOUR_API_KEY&action=add&service=7&link=https://instagram.com/example&quantity=1000&request_id=550e8400-e29b-41d4-a716-446655440000"const res = await fetch("https://notpanel.com/api/v3", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
key: "YOUR_API_KEY",
action: "add",
service: "7",
link: "https://instagram.com/example",
quantity: "1000",
request_id: "550e8400-e29b-41d4-a716-446655440000",
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://notpanel.com/api/v3",
data={
"key": "YOUR_API_KEY",
"action": "add",
"service": "7",
"link": "https://instagram.com/example",
"quantity": "1000",
"request_id": "550e8400-e29b-41d4-a716-446655440000",
},
)
print(res.json())<?php
$body = http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'add',
'service' => '7',
'link' => 'https://instagram.com/example',
'quantity' => '1000',
'request_id' => '550e8400-e29b-41d4-a716-446655440000',
]);
$response = file_get_contents('https://notpanel.com/api/v3', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => "Content-Type: application/x-www-form-urlencoded\r\n",
'content' => $body,
'ignore_errors' => true,
],
]));
print_r(json_decode($response, true));
Substitua YOUR_API_KEY pela chave da sua página de API.
{
"order": 1234567,
"status": "Pending",
"status_key": "pending",
"charge": "1.20",
"currency": "USD",
"instant_cancel_until": "2026-10-03T10:00:15Z",
"cancel_available": true,
"cancel_window_seconds": 15,
"cancel_before": "2026-10-03T10:00:15Z"
}Erros
- 400
{"error":"Minimum quantity is 100","error_code":"MINIMUM_QUANTITY","retryable":false,"details":{"n":100}}A quantidade está abaixo do mínimo do serviço. O mesmo formato cobre o máximo, o passo e as outras verificações.
- 402
{"error":"Insufficient balance","error_code":"INSUFFICIENT_BALANCE","retryable":false}A carteira não cobre o valor. Nada foi cobrado e nenhum pedido existe. Adicione fundos em
/dashboard/wallet. - 409
{"error":"request_id was already used with different parameters","error_code":"REQUEST_ID_CONFLICT","retryable":false}Esse
request_idjá criou um pedido com parâmetros diferentes. Use um novorequest_idpara um pedido diferente.
Resposta
Todo add bem-sucedido retorna o novo pedido na hora. Detalhes internos de entrega nunca aparecem; mudanças posteriores aparecem em status e nos webhooks.
Campos da resposta
orderinteger- O número do pedido. É o mesmo número no painel, no suporte e em todas as outras ações.
statusstringPendingpara um pedido novo. Umrequest_idrepetido retorna o status atual do pedido.status_keystringpendingpara um pedido novo; caso contrário, a chave do status atual.chargestring- O valor que foi cobrado, em USD, como string.
currencystring- Sempre
USD. instant_cancel_untilstring (UTC time)- Fim da janela de cancelamento grátis: 15 segundos após a criação.
cancel_availablebooleantrueenquanto o pedido ainda pode ser cancelado com reembolso total. Mantido para scripts antigos.cancel_window_secondsinteger- Duração da janela de cancelamento grátis em segundos: 15. Mantido para scripts antigos.
cancel_beforestring (UTC time)- O mesmo horário de
instant_cancel_until. Mantido para scripts antigos. replayedboolean- Presente e true somente quando este é o pedido original de um
request_idrepetido.
Novas tentativas e request_id
request_id (ou seu alias idempotency_key, de até 128 caracteres) é consultado antes de qualquer outra coisa. A mesma requisição retorna o pedido original e nada é cobrado duas vezes. Uma requisição diferente com o mesmo ID retorna REQUEST_ID_CONFLICT. Se duas cópias chegarem ao mesmo tempo, uma vence e a outra recebe o mesmo pedido.
key=YOUR_API_KEY&action=add&service=7&link=https://instagram.com/example&quantity=1000&request_id=550e8400-e29b-41d4-a716-446655440000{
"order": 1234567,
"status": "In progress",
"status_key": "in_progress",
"charge": "1.20",
"currency": "USD",
"instant_cancel_until": "2026-10-03T10:00:15Z",
"cancel_available": false,
"cancel_window_seconds": 15,
"cancel_before": "2026-10-03T10:00:15Z",
"replayed": true
}key=YOUR_API_KEY&action=add&service=7&link=https://instagram.com/example&quantity=2000&request_id=550e8400-e29b-41d4-a716-446655440000{
"error": "request_id was already used with different parameters",
"error_code": "REQUEST_ID_CONFLICT",
"retryable": false
}Depois de fazer um pedido
O pedido fica Pending e você pode cancelá-lo com reembolso total durante os primeiros 15 segundos. Problemas encontrados depois, como um link errado ou um link ocupado, chegam como um pedido Canceled com um reason_code e um reembolso automático. Nunca são erros do add.
O que é verificado, em ordem
O primeiro problema encontrado é retornado e nada é cobrado.
- O serviço existe e pode receber pedidos:
SERVICE_NOT_FOUND,SERVICE_DISCONTINUED,SERVICE_PAUSED. - A quantidade está dentro do mínimo e do máximo:
MINIMUM_QUANTITY,MAXIMUM_QUANTITY. - A quantidade respeita o passo:
QUANTITY_STEP. - Listas e reações exatas: a quantidade corresponde ao número de itens,
QUANTITY_MISMATCH. - Os campos extras são oferecidos e válidos:
OPTION_NOT_SUPPORTED,MISSING_PARAMETER,INVALID_OPTION. - Os valores de drip feed se encaixam:
DRIP_FEED_NOT_AVAILABLE,DRIP_FEED_CONFLICT,DRIP_FEED_INVALID. - O link combina com o serviço:
INVALID_LINK,LINK_BLOCKED. - Um pedido ativo por link, quando o serviço tem essa regra:
LINK_BUSY. - O saldo cobre o valor:
INSUFFICIENT_BALANCE.
Erros do add
Todos usam o formato de erro comum. Ramifique por error_code; o texto da mensagem é para pessoas.
- 400
MISSING_PARAMETER
Missing required parameter: {param}Falta um parâmetro obrigatório. details.param o indica. Corrija a requisição primeiro.
- 400
INVALID_PARAMETER
Invalid {param}: {rule}Um parâmetro tem um valor inválido. details.param e details.rule dizem qual e por quê. Corrija a requisição primeiro.
- 404
SERVICE_NOT_FOUND
Service not foundNenhum serviço tem este ID, ou ele não está disponível para você. Corrija a requisição primeiro.
- 410
SERVICE_DISCONTINUED
Service has been discontinuedO serviço foi descontinuado. Corrija a requisição primeiro.
- 409
SERVICE_PAUSED
Service is temporarily unavailableO serviço está pausado por enquanto. Tente de novo mais tarde. Tentar de novo pode ajudar.
- 503
ORDER_PLACEMENT_PAUSED
Ordering is temporarily pausedOs pedidos estão pausados para todos por um curto período. Retry-After diz quando tentar de novo. Tentar de novo pode ajudar.
- 400
MINIMUM_QUANTITY
Minimum quantity is {n}A quantidade está abaixo do mínimo do serviço. Corrija a requisição primeiro.
- 400
MAXIMUM_QUANTITY
Maximum quantity is {n}A quantidade está acima do máximo do serviço. Corrija a requisição primeiro.
- 400
QUANTITY_STEP
Quantity must be a multiple of {step}A quantidade não é múltipla do passo do serviço. Corrija a requisição primeiro.
- 400
QUANTITY_MISMATCH
quantity must equal the number of items in {param} ({count})A quantidade não corresponde ao número de itens de uma lista ou de um campo de reações. Corrija a requisição primeiro.
- 400
MINIMUM_ORDER_AMOUNT
Minimum order amount is ${amount}O pedido vale menos que o valor mínimo de pedido. Corrija a requisição primeiro.
- 400
OPTION_NOT_SUPPORTED
This service does not accept {param}O serviço não aceita um campo que você enviou. Corrija a requisição primeiro.
- 400
INVALID_OPTION
Invalid {param}: {rule}Um campo extra tem um valor inválido. details.param e details.rule dizem qual e por quê. Corrija a requisição primeiro.
- 400
DRIP_FEED_NOT_AVAILABLE
Drip-feed is not available for this serviceO serviço não tem drip feed, ou não tem para esta quantidade. Corrija a requisição primeiro.
- 400
DRIP_FEED_CONFLICT
Send runs and interval, or drip_feed_total_minutes, not bothAs duas formas de drip feed foram enviadas em uma mesma requisição. Corrija a requisição primeiro.
- 400
DRIP_FEED_INVALID
{rule}Os valores de drip feed não cabem nos limites. A mensagem diz qual limite. Corrija a requisição primeiro.
- 400
INVALID_LINK
Link is invalid for this serviceO link não combina com este serviço. Corrija a requisição primeiro.
- 400
LINK_BLOCKED
This link is blocked. Contact support if this is a mistake.O link está bloqueado. Fale com o suporte se achar que é um engano. Corrija a requisição primeiro.
- 409
LINK_BUSY
An order for this link is still running. Wait until it finishes.Um pedido anterior para este link ainda está em andamento. Aguarde ele terminar. Tentar de novo pode ajudar.
- 402
INSUFFICIENT_BALANCE
Insufficient balanceO saldo da carteira é menor que a cobrança. Corrija a requisição primeiro.
- 429
ORDER_LIMIT_REACHED
Too many orders. Try again later.Pedidos demais foram feitos ou estão abertos ao mesmo tempo. Tente de novo mais tarde. Tentar de novo pode ajudar.
- 409
SERVICE_CHANGED
Service settings changed while placing the order. Retry.As configurações do serviço mudaram enquanto o pedido era feito. Envie a requisição de novo. Tentar de novo pode ajudar.
- 409
REQUEST_ID_CONFLICT
request_id was already used with different parametersEste request_id já criou um pedido com parâmetros diferentes. Corrija a requisição primeiro.
- 500
INTERNAL_ERROR
Internal server errorAlgo falhou do nosso lado. Repetir um add com o mesmo request_id é seguro. Tentar de novo pode ajudar.