Référence
Journal des modifications
Modifications majeures et notables de l'API v3. Nous suivons semver (s'ouvre dans un nouvel onglet) — les changements additifs (nouveaux paramètres facultatifs, nouvelles actions, nouveaux champs dans les réponses) sont livrés au sein d'une version majeure ; les changements incompatibles vont dans une nouvelle version majeure.
- Dernière
v3.2: Un nouveau système de commandes : une seule liste d'erreurs, une alimentation progressive plus simple, une annulation et une recharge plus claires
Tout ce qui suit est livré ensemble sous l'en-tête
X-NotPanel-API-Version: 2026-10. Chaque action existante continue de fonctionner, et les adresses /api/v1, /api/v2 et /api/v3 se comportent de façon identique.- Chaque commande a un numéro unique qui sert dans le tableau de bord, auprès du support et dans l'API. Les commandes API conservent leurs anciens numéros.
- Alimentation progressive :
runsavecintervalfonctionne toujours. La nouvelle forme simple prend laquantitytotale etdrip_feed_total_minutes, jusqu'à 48 heures. - L'annulation est instantanée avec remboursement intégral pendant les 15 premières secondes. Ensuite, vous pouvez demander une annulation lorsque le service le permet, avec remboursement automatique.
orderrenvoie un objet, comme avant ;ordersrenvoie un tableau. - La recharge fonctionne une fois toutes les 6 heures par commande, sans date limite et avec un motif clair en cas de refus.
- Les réactions Telegram forment un seul champ
reactions, soit en mélange (👍,❤️,🔥), soit avec des nombres exacts (👍:60,❤️:40), vérifié avant que vous ne soyez débité. - La liste des services affiche les étiquettes, les champs supplémentaires avec leurs limites, les limites d'alimentation progressive et la disponibilité.
cancel: truesignifie désormais que les demandes d'annulation fonctionnent réellement. - Chaque erreur a un code fixe, un statut HTTP et un indicateur retryable. Les anciens codes et les codes actuels sont listés ci-dessous.
- Nouveau
order_details, qui peut aussi retrouver une commande grâce à votrerequest_id. statusinclut le remboursement : pour une commande annulée ou partielle,refundest le montant remboursé, aucun appel séparé n'est donc nécessaire.refund_quoteest un ancien nom qui renvoie la même réponse questatus.- Les webhooks forment désormais un seul système : un événement signé par appel, versionné, avec de nouveaux événements pour les commandes annulées et partielles et pour les résultats de recharge.
- Supprimés : les corps de webhook groupés, le paramètre
couponet, dans status, les champsrefund_pendinget les deux champs de politique de remboursement. L'ancien paramètredelayn'est plus lu ; utilisezdrip_feed_total_minutes. - Ajoutés :
can_canceldans status etinstant_cancel_untildans la réponse deadd. L'anciencancel_availablereste dans les deux, etcancel_window_secondsetcancel_beforerestent dans la réponse deadd. - Conservées : les actions
catalogetaccount_statuscontinuent de fonctionner comme avant, etcatalogest désormais documentée dans Lister les services. Les anciens noms de paramètres fonctionnent toujours :referer,lpost_count,hashtagpour les listes de hashtags,usernamesséparés par des virgules et l'ancienne table des réactions.webhook.addaccepte aussi les noms d'événementorder.refundedetorder.refill_completed. /api/v1,/api/v2et/api/v3continuent toutes de fonctionner et se comportent de la même façon./api/v3est celle qui est documentée.- Une commande terminée affiche toujours
remainsà 0.
v3.1: Noms de services adaptés au marché
Les actions services et catalog acceptent désormais un code de langue facultatif pour des noms rédigés avec une terminologie de marché sélectionnée dans dix langues. Les demandes explicites ajoutent les métadonnées du nom canonique et de la langue réelle, avec retour sûr à l’anglais si une traduction manque ou est obsolète. Sans language, la structure historique en anglais reste inchangée. Les administrateurs peuvent vérifier ou affiner chaque nom.
v3.0: v3 devient l'API par défaut
/api/v3 devient l'endpoint canonique et un remplacement direct d'URL de base pour le contrat reseller familier. v3 ajoute des clés exactes facultatives, une protection legacy de 60 secondes, le catalogue avancé, des ID numériques, refund_quote, account_status, l'annulation unitaire ou par lot séquentiel et les webhooks signés. Le débit API utilise désormais un niveau fondé sur le lifetime successful spend et une fenêtre glissante de 60 secondes partagée par toutes les clés du compte. /api/v1 et /api/v2 sont des alias exacts du même contrat actuel.
v2.5: Catalogue avancé, réconciliation des remboursements et annulation
Ajout des actions catalog paginée et refund_quote en lecture seule, enrichissement des métadonnées de add et status et fenêtre d'annulation de 15 secondes pour les commandes ordinaires via l'API. Les événements de webhook de l'API portent désormais un id d'événement stable, tandis que deliveryId reste stable lors des nouvelles tentatives d'un même lot ; chaque tentative reçoit un nouvel horodatage et une nouvelle signature. La livraison des webhooks reste assurée au mieux avec des tentatives, sans garantie durable de livraison au moins une fois.
v2.4: 12 nouvelles plateformes médias dans le catalogue
Ajout de services pour Google, Rumble, Audiomack, Tumblr, Kwai, Clubhouse, Vimeo, Deezer, Tidal, Apple Music, Quora et GitHub. Ils apparaissent dans l'action services comme n'importe quel autre service et chacun dispose d'une page de plateforme publique dédiée. Aucune modification côté client requise — les nouveaux ID de service apparaissent simplement dans le catalogue.
v2.3: Disponibilité du service appliquée lors de l’ajout
Les services indisponibles rejettent action=add au lieu d’accepter ou de mettre silencieusement une nouvelle commande en file. Actualisez le catalogue et choisissez un service disponible avant de réessayer.
v2.2: Paramètres de commande facultatifs
L’action add accepte désormais des champs facultatifs pris en charge et propres au type de service, comme un délai initial et des options d’engagement par type. Les champs déjà définis par un type de service conservent leur sens documenté.
v2.1: Paramètres d'alimentation progressive à la passation de commande
L’action add accepte runs et interval ensemble pour les services avec dripfeed=true. La livraison totale est quantity × runs et ne peut pas dépasser le maximum du service. Les services sans drip-feed rejettent ces champs.
v2.0: Lancement public de l'API v2
Lancement de l’API d’actions v2 encodée en formulaire avec des contrôles de débit, des webhooks signés livrés au mieux avec nouvelles tentatives et un placement de commande idempotent. Les URL v1 et v2 actuelles sont des alias du contrat v3 et utilisent la limite partagée du compte documentée.
Migrer depuis les versions précédentes
Les codes d'erreur et les noms d'événements webhook ont changé. Utilisez ces listes une fois lors de la mise à jour de votre code.
Codes d'erreur
Les réponses précédentes utilisaient les codes de gauche. La version 3.2 utilise une liste fermée, présentée dans Erreurs. La dernière colonne indique comment ils se correspondent.
| Avant | Maintenant | Ce qui a changé |
|---|---|---|
| INVALID_ACTION | INVALID_ACTION | Même code. |
| MISSING_SERVICE, MISSING_LINK, MISSING_QUANTITY, MISSING_ORDER, MISSING_ORDER_PARAMETER, MISSING_REFILL, MISSING_WEBHOOK_URL, MISSING_WEBHOOK_ID, NO_ORDER_IDS, NO_REFILL_IDS, NO_WEBHOOK_EVENTS, MISSING_CUSTOM_FIELD | MISSING_PARAMETER | Plusieurs anciens codes n'en forment plus qu'un. Lisez details pour les précisions. |
| INVALID_SERVICE_ID, INVALID_QUANTITY, LINK_TOO_LONG, IDEMPOTENCY_EMPTY, IDEMPOTENCY_EMPTY_REQUEST, IDEMPOTENCY_TOO_LONG, IDEMPOTENCY_TOO_LONG_REQUEST, INVALID_LANGUAGE, INVALID_WEBHOOK_EVENT | INVALID_PARAMETER | Plusieurs anciens codes n'en forment plus qu'un. Lisez details pour les précisions. |
| INVALID_LINK_URL | INVALID_LINK, LINK_BLOCKED | Un ancien code est devenu plusieurs, chacun plus précis. |
| INVALID_CUSTOM_FIELD | INVALID_OPTION | Même code. |
| RUNS_INVALID, RUNS_TOO_HIGH, INTERVAL_INVALID, INTERVAL_TOO_HIGH | DRIP_FEED_INVALID | Plusieurs anciens codes n'en forment plus qu'un. Lisez details pour les précisions. |
| REQUEST_ID_CONFLICT | REQUEST_ID_CONFLICT | Même code. |
| SERVICE_NOT_FOUND, ADD_SERVICE_NOT_FOUND, WRONG_SERVICE_TYPE | SERVICE_NOT_FOUND | Plusieurs anciens codes n'en forment plus qu'un. Lisez details pour les précisions. |
| SERVICE_NOT_ACTIVE | SERVICE_PAUSED | Même code. |
| SERVICE_DISCONTINUED, REFILL_SERVICE_DISCONTINUED | SERVICE_DISCONTINUED | Plusieurs anciens codes n'en forment plus qu'un. Lisez details pour les précisions. |
| INSUFFICIENT_BALANCE | INSUFFICIENT_BALANCE | Même code. |
| ORDER_NOT_FOUND, STATUS_ORDER_NOT_FOUND, REFUND_ORDER_NOT_FOUND, REFILL_ORDER_NOT_FOUND | ORDER_NOT_FOUND | Plusieurs anciens codes n'en forment plus qu'un. Lisez details pour les précisions. |
| ORDER_ALREADY_COMPLETED, ORDER_ALREADY_REFUNDED | ORDER_FINISHED | Plusieurs anciens codes n'en forment plus qu'un. Lisez details pour les précisions. |
| ORDER_NOT_CANCELLABLE | CANCEL_NOT_AVAILABLE, ORDER_FINISHED | Un ancien code est devenu plusieurs, chacun plus précis. |
| TOO_MANY_ORDERS, TOO_MANY_REFILLS | TOO_MANY_IDS | Plusieurs anciens codes n'en forment plus qu'un. Lisez details pour les précisions. |
| INACTIVE_ACCOUNT, ACCOUNT_NOT_FOUND, ACCOUNT_ERROR | INACTIVE_ACCOUNT, EMAIL_UNVERIFIED | Un ancien code est devenu plusieurs, chacun plus précis. |
| API_RATE_LIMITED, IP_RATE_LIMITED, CANCEL_RATE_LIMITED | API_RATE_LIMITED | Plusieurs anciens codes n'en forment plus qu'un. Lisez details pour les précisions. |
| REFILL_STATUS_INELIGIBLE | REFILL_NOT_COMPLETED, REFILL_NOT_AVAILABLE | Un ancien code est devenu plusieurs, chacun plus précis. |
| REFILL_SERVICE_NOT_REFILLABLE, REFILL_REQUEST_FAILED | REFILL_NOT_AVAILABLE | Plusieurs anciens codes n'en forment plus qu'un. Lisez details pour les précisions. |
| REFILL_ALREADY_PENDING | REFILL_ALREADY_PENDING | Même code. |
| REFILL_WAITING_PERIOD | REFILL_COOLDOWN | Plusieurs anciens codes n'en forment plus qu'un. Lisez details pour les précisions. |
| REFILL_NOT_FOUND | REFILL_NOT_FOUND | Même code. |
| INVALID_WEBHOOK_URL | INVALID_WEBHOOK_URL | Même code. |
| WEBHOOK_LIMIT | WEBHOOK_LIMIT | Même code. |
| WEBHOOK_NOT_FOUND | WEBHOOK_NOT_FOUND | Même code. |
| REQUEST_PROCESSING, REQUEST_OUTCOME_UNKNOWN, REQUEST_OUTCOME_NOT_RECORDED, REQUEST_UNCONFIRMED, REQUEST_RESULT_UNAVAILABLE, CONFLICTING_REQUEST_RECORDS | – | N'arrive plus. L'API n'attend jamais un autre système, et les problèmes ultérieurs arrivent sous forme de commande Canceled avec un code de motif. |
Webhooks
Deux noms d'événements ont changé. Le corps groupé a disparu : chaque appel porte désormais un événement dans une enveloppe avec id, type, schema_version, created_at, sequence et data, et les points de terminaison appartiennent au compte plutôt qu'à une clé.
| Avant | Maintenant |
|---|---|
| order.refunded | order.canceled |
| order.refill_completed | refill.completed |