Commandes
Passer une commande
Passe une commande et débite le montant en une seule étape. La réponse est immédiate : la commande est En attente et peut être annulée gratuitement pendant ses 15 premières secondes. Envoyez votre propre request_id pour qu'une nouvelle tentative ne crée jamais une deuxième commande.
https://notpanel.com/api/v3action=add- Clé d'API requise
- Limite de requêtes atteinte
- Corps :
application/x-www-form-urlencoded
Paramètres
Toujours envoyé
keystringRequis- Votre clé API.
actionstringRequisaddDoit être la chaîne littérale « add ».
Commande
serviceintegerRequis- ID du service issu de la liste des services.
linkstringRequis- Le lien vers lequel livrer. Ce qui est valide dépend du service.
quantityintegerSelon le type de service- Quantité totale. Avec
runsetinterval, c'est la quantité par exécution. Les listes et les réactions exactes comptent leur propre quantité, et les forfaits en ont une fixe.
Nouvelles tentatives
request_idstringFacultatif- Votre propre ID pour cette commande, jusqu'à 128 caractères. Le répéter avec les mêmes paramètres renvoie la commande d'origine. L'utiliser avec des paramètres différents renvoie
REQUEST_ID_CONFLICT. idempotency_keystringFacultatif- Alias de
request_id. Si les deux sont envoyés,request_idl'emporte.
Alimentation progressive
runsintegerFacultatif- Alimentation progressive classique : le nombre d'exécutions, de 2 à 100.
runs=1est une commande normale. intervalintegerFacultatif- Alimentation progressive classique : minutes entre les exécutions, de 1 à 1440.
drip_feed_total_minutesintegerFacultatif- Alimentation progressive simple : terminer toute la
quantityen ce nombre de minutes, de 1 à 2880. Ne la combinez pas avecrunsetinterval.
Champs du service
reactionsstringFacultatif- Réactions Telegram, par exemple
👍,❤️,🔥ou👍:60,❤️:40. comments, usernames, answer_number, …Selon le type de service- Autres champs supplémentaires par leur nom de champ, comme
comments,usernamesouanswer_number. La listefieldsdu service indique lesquels il accepte.
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));
Remplacez YOUR_API_KEY par la clé de votre page 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"
}Erreurs
- 400
{"error":"Minimum quantity is 100","error_code":"MINIMUM_QUANTITY","retryable":false,"details":{"n":100}}La quantité est inférieure au minimum du service. La même forme couvre le maximum, le pas et les autres vérifications.
- 402
{"error":"Insufficient balance","error_code":"INSUFFICIENT_BALANCE","retryable":false}Le portefeuille ne couvre pas le montant. Rien n'a été débité et aucune commande n'existe. Ajoutez des fonds dans
/dashboard/wallet. - 409
{"error":"request_id was already used with different parameters","error_code":"REQUEST_ID_CONFLICT","retryable":false}Ce
request_ida déjà créé une commande avec des paramètres différents. Utilisez un nouveaurequest_idpour une commande différente.
Réponse
Chaque add réussi renvoie aussitôt la nouvelle commande. Aucun détail interne de livraison n'apparaît ; les changements ultérieurs se voient dans status et dans les webhooks.
Champs de la réponse
orderinteger- Le numéro de commande. C'est le même numéro dans le tableau de bord, auprès du support et dans toutes les autres actions.
statusstringPendingpour une nouvelle commande. Unrequest_idrépété renvoie l'état actuel de la commande.status_keystringpendingpour une nouvelle commande ; sinon la clé de l'état actuel.chargestring- Ce qui vous a été débité, en USD, sous forme de chaîne.
currencystring- Toujours
USD. instant_cancel_untilstring (UTC time)- Fin de la fenêtre d'annulation gratuite : 15 secondes après la création.
cancel_availablebooleantruetant que la commande peut encore être annulée avec un remboursement complet. Conservé pour les anciens scripts.cancel_window_secondsinteger- Durée de la fenêtre d'annulation gratuite en secondes : 15. Conservé pour les anciens scripts.
cancel_beforestring (UTC time)- La même heure que
instant_cancel_until. Conservé pour les anciens scripts. replayedboolean- Présent et true uniquement lorsqu'il s'agit de la commande d'origine d'un
request_idrépété.
Nouvelles tentatives et request_id
request_id (ou son alias idempotency_key, jusqu'à 128 caractères) est consulté avant tout le reste. La même requête renvoie la commande d'origine et rien n'est débité deux fois. Une requête différente avec le même ID renvoie REQUEST_ID_CONFLICT. Si deux copies arrivent en même temps, l'une l'emporte et l'autre reçoit la même commande.
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
}Après avoir passé une commande
La commande est Pending et vous pouvez l'annuler avec remboursement intégral pendant ses 15 premières secondes. Les problèmes détectés ensuite, comme un lien erroné ou un lien occupé, arrivent sous forme de commande Canceled avec un reason_code et un remboursement automatique. Ce ne sont jamais des erreurs de add.
Ce qui est vérifié, dans l'ordre
Le premier problème trouvé est renvoyé et rien n'est débité.
- Le service existe et peut accepter des commandes :
SERVICE_NOT_FOUND,SERVICE_DISCONTINUED,SERVICE_PAUSED. - La quantité est comprise entre le minimum et le maximum :
MINIMUM_QUANTITY,MAXIMUM_QUANTITY. - La quantité respecte le pas :
QUANTITY_STEP. - Listes et réactions exactes : la quantité correspond au nombre d'éléments,
QUANTITY_MISMATCH. - Les champs supplémentaires sont proposés et valides :
OPTION_NOT_SUPPORTED,MISSING_PARAMETER,INVALID_OPTION. - Les valeurs d'alimentation progressive conviennent :
DRIP_FEED_NOT_AVAILABLE,DRIP_FEED_CONFLICT,DRIP_FEED_INVALID. - Le lien convient au service :
INVALID_LINK,LINK_BLOCKED. - Une commande active par lien, lorsque le service a cette règle :
LINK_BUSY. - Le solde couvre le montant :
INSUFFICIENT_BALANCE.
Erreurs de add
Toutes utilisent la forme d'erreur commune. Branchez sur error_code ; le texte du message est destiné aux personnes.
- 400
MISSING_PARAMETER
Missing required parameter: {param}Un paramètre obligatoire est manquant. details.param le désigne. Corrigez d'abord la requête.
- 400
INVALID_PARAMETER
Invalid {param}: {rule}Un paramètre a une valeur invalide. details.param et details.rule indiquent lequel et pourquoi. Corrigez d'abord la requête.
- 404
SERVICE_NOT_FOUND
Service not foundAucun service n'a cet ID, ou il n'est pas disponible pour vous. Corrigez d'abord la requête.
- 410
SERVICE_DISCONTINUED
Service has been discontinuedLe service a été abandonné. Corrigez d'abord la requête.
- 409
SERVICE_PAUSED
Service is temporarily unavailableLe service est en pause pour le moment. Réessayez plus tard. Réessayer peut aider.
- 503
ORDER_PLACEMENT_PAUSED
Ordering is temporarily pausedLes commandes sont suspendues pour tout le monde pour un court moment. Retry-After indique quand réessayer. Réessayer peut aider.
- 400
MINIMUM_QUANTITY
Minimum quantity is {n}La quantité est inférieure au minimum du service. Corrigez d'abord la requête.
- 400
MAXIMUM_QUANTITY
Maximum quantity is {n}La quantité est supérieure au maximum du service. Corrigez d'abord la requête.
- 400
QUANTITY_STEP
Quantity must be a multiple of {step}La quantité n'est pas un multiple du pas du service. Corrigez d'abord la requête.
- 400
QUANTITY_MISMATCH
quantity must equal the number of items in {param} ({count})La quantité ne correspond pas au nombre d'éléments d'une liste ou d'un champ de réactions. Corrigez d'abord la requête.
- 400
MINIMUM_ORDER_AMOUNT
Minimum order amount is ${amount}La commande vaut moins que le montant minimal de commande. Corrigez d'abord la requête.
- 400
OPTION_NOT_SUPPORTED
This service does not accept {param}Le service n'accepte pas un champ que vous avez envoyé. Corrigez d'abord la requête.
- 400
INVALID_OPTION
Invalid {param}: {rule}Un champ supplémentaire a une valeur invalide. details.param et details.rule indiquent lequel et pourquoi. Corrigez d'abord la requête.
- 400
DRIP_FEED_NOT_AVAILABLE
Drip-feed is not available for this serviceLe service n'a pas d'alimentation progressive, ou aucune pour cette quantité. Corrigez d'abord la requête.
- 400
DRIP_FEED_CONFLICT
Send runs and interval, or drip_feed_total_minutes, not bothLes deux formes d'alimentation progressive ont été envoyées dans une même requête. Corrigez d'abord la requête.
- 400
DRIP_FEED_INVALID
{rule}Les valeurs d'alimentation progressive ne respectent pas les limites. Le message indique quelle limite. Corrigez d'abord la requête.
- 400
INVALID_LINK
Link is invalid for this serviceLe lien ne convient pas à ce service. Corrigez d'abord la requête.
- 400
LINK_BLOCKED
This link is blocked. Contact support if this is a mistake.Le lien est bloqué. Contactez le support si vous pensez qu'il s'agit d'une erreur. Corrigez d'abord la requête.
- 409
LINK_BUSY
An order for this link is still running. Wait until it finishes.Une commande précédente pour ce lien est encore en cours. Attendez qu'elle se termine. Réessayer peut aider.
- 402
INSUFFICIENT_BALANCE
Insufficient balanceLe solde du portefeuille est inférieur au montant à débiter. Corrigez d'abord la requête.
- 429
ORDER_LIMIT_REACHED
Too many orders. Try again later.Trop de commandes ont été passées ou sont ouvertes en même temps. Réessayez plus tard. Réessayer peut aider.
- 409
SERVICE_CHANGED
Service settings changed while placing the order. Retry.Les paramètres du service ont changé pendant la commande. Renvoyez la requête. Réessayer peut aider.
- 409
REQUEST_ID_CONFLICT
request_id was already used with different parametersCe request_id a déjà créé une commande avec des paramètres différents. Corrigez d'abord la requête.
- 500
INTERNAL_ERROR
Internal server errorUn incident est survenu de notre côté. Répéter un add avec le même request_id est sans risque. Réessayer peut aider.