L'API v3 conserve le contrat familier key + action et les réponses JSON. Un client reseller existant peut changer directement son URL de base ; les champs et actions avancés de v3 sont des extensions facultatives.
Inscription gratuite via /register — par e-mail ou Google OAuth. Aucune carte bancaire n'est requise pour générer une clé d'API, seulement pour approvisionner le portefeuille afin de passer des commandes réelles.
Une fois connecté, rendez-vous sur /dashboard/api. Cliquez sur « Générer une clé » et copiez la valeur brute — elle n'est affichée qu'une seule fois, jamais ensuite. Si vous la perdez, révoquez-la et générez-en une nouvelle. Chaque utilisateur peut détenir jusqu'à 5 clés actives.
Toutes vos clés partagent la limite effective de requêtes par minute du compte. Les dépenses réussies cumulées déterminent le niveau automatique ; des limites IP et par action peuvent aussi s’appliquer — voir Limites de débit.
Pour la compatibilité, action=services renvoie un tableau en cache des services actifs avec le tarif propre au compte, le minimum, le maximum et les indicateurs de capacités. Utilisez action=catalog pour la pagination, la recherche, la disponibilité, les métadonnées de plateforme et catégorie, ou les champs de fraîcheur. Remplacez YOUR_API_KEY par la clé de l’étape 2.
# 1. List active catalog services
curl -X POST https://notpanel.com/api/v3 \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "key=YOUR_API_KEY&action=services"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: "services",
}),
});
const services = await res.json();
console.log(`Found ${services.length} services`);import requests
res = requests.post(
"https://notpanel.com/api/v3",
data={"key": "YOUR_API_KEY", "action": "services"},
)
services = res.json()
print(f"Found {len(services)} services")<?php
$body = http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'services',
]);
$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,
],
]));
$services = json_decode($response, true);
echo "Found " . count($services) . " services\n";
Besoin de noms naturels pour vos utilisateurs régionaux ? Ajoutez language=fr (ou en, es, pt, ru, tr, ar, hi, id, zh) à services ou catalog. Les noms sont localisés avec une terminologie de marché sélectionnée selon l’usage réel du marché, les marques restent reconnaissables et la réponse indique la langue utilisée. Omettez ce paramètre pour conserver la structure historique en anglais. Les administrateurs peuvent vérifier ou affiner chaque nom.
Choisissez un service, alimentez le wallet et appelez action=add avec les champs du type. Les anciens clients peuvent envoyer la requête habituelle sans changement. Pour des retries exacts, ajoutez facultativement un request_id unique de 128 caractères maximum. Voir Passer une commande pour la liste complète des paramètres.
Interrogez le statut pour des commandes individuelles ou des lots allant jusqu'à 100 ID. Pour des intégrations pilotées par les événements, enregistrez un webhook pour les six événements pris en charge : order.completed, order.partial, order.processing, order.in_progress, order.refunded et order.refill_completed. La livraison est au mieux avec des nouvelles tentatives ; rapprochez les états importants avec action=status.
Changez l'URL de base et conservez les appels key + action habituels. services, add, status, balance, refill, refill_status et cancel fonctionnent directement. Adoptez catalog, refund_quote, clés exactes, lots et webhooks signés selon vos besoins.