API

Tout ce que fait le panel est accessible via deux API distinctes. Elles partagent le même compte, le même solde et le même catalogue, et diffèrent par leur format et leurs fonctionnalités.

Tout ce que fait le panel est accessible via deux API distinctes. Elles partagent le même compte, le même solde et le même catalogue, et diffèrent par leur format et leurs fonctionnalités.

Pourquoi deux API ?

L’API revendeur classique (v2), utilisée par tout le secteur, reçoit un formulaire envoyé en POST sur un endpoint unique et répond toujours avec un code HTTP 200. C’est exactement le format qu’attendent les logiciels de panel prêts à l’emploi, elle reste donc telle quelle. Les développeurs qui écrivent leurs propres systèmes se heurtaient sans cesse à ses limites : impossible de distinguer les erreurs, le catalogue arrivait d’un seul bloc et il fallait interroger le statut des commandes en permanence. La v3 a été conçue pour eux.

L’API classique ne sera pas arrêtée. Aucune date de fin n’est prévue : vous n’aurez jamais à modifier une intégration qui fonctionne.

Comparatif

FonctionnalitéClassique (v2)Nouvelle (v3)
StructureUn seul endpoint, envoi de formulaire, paramètre actionREST orienté ressources, corps JSON
Statut HTTPToujours 200, même en cas d’échecVrais codes (400, 401, 402, 404, 409, 429, 502)
ErreursTexte libretype + code stable + message localisé + param + doc_url
Statut de commandeTexte localisé uniquementValeur machine stable, plus un libellé d’affichage distinct
Description du serviceAucuneDescription en 16 langues, délai moyen, plateforme, catégorie
Champs de commandeDevinés à partir du nom du typeChaque service publie son propre schéma de champs
Unité de prixNon précisée (source d’erreurs d’un facteur 1 000 sur les forfaits)Explicitement per_1000 ou per_order
CatalogueTous les services dans une seule réponseFiltres et pagination par curseur
Protection contre les doublonsAucuneIdempotency-Key
Suivi des statutsInterrogation permanente (polling)Webhooks signés ou flux d’événements
SchémaAucunOpenAPI 3.1
LanguesAnglais et turc (URL distinctes)16 langues (en-tête ou paramètre)
Qualité des servicesAucuneScore, niveau de confiance et éléments de preuve par service, sélection classée des meilleurs

Laquelle choisir ?

Classique (v2)

Choisissez l’API classique si vous utilisez un logiciel de panel prêt à l’emploi, un bot ou un panel revendeur. La plupart ne vous demandent que de changer l’URL de l’API et la clé, et fonctionnent en quelques minutes.

Nouvelle API (v3)

Choisissez la v3 si vous développez votre propre application, boutique en ligne ou automatisation. La gestion des erreurs, la protection contre les doublons et les notifications sont intégrées, et vous pouvez générer votre formulaire de commande directement à partir du schéma du service.

Premiers pas

  1. 1Créez une clé API dans l’onglet Clés.
  2. 2Récupérez la liste des services et relevez l’id et le schéma de champs du service dont vous avez besoin.
  3. 3Validez d’abord la commande avec preview, puis créez-la.
  4. 4Enregistrez un webhook, ou lisez le flux d’événements, pour suivre les changements de statut.

Erreurs (48)

CodeStatutDescription
missing_api_key401Aucune clé API n’a été fournie. Envoyez-la sous la forme « Authorization: Bearer <key> ».
invalid_api_key401La clé API fournie n’est pas valide.
revoked_api_key401Cette clé API a été révoquée et ne peut plus être utilisée.
account_banned403Ce compte est banni.
account_suspended403Ce compte est suspendu.
insufficient_scope403Cette clé API n’a pas l’autorisation d’accéder à cet endpoint.
invalid_json400Le corps de la requête n’est pas un JSON valide.
unsupported_content_type415Content-Type non pris en charge. Utilisez application/json ou application/x-www-form-urlencoded.
method_not_allowed405Cette méthode HTTP n’est pas autorisée sur cet endpoint.
payload_too_large413Le corps de la requête est trop volumineux.
missing_parameter400Un paramètre obligatoire est manquant.
invalid_parameter400Un paramètre a une valeur non valide.
invalid_quantity400La quantité n’est pas un nombre entier positif valide.
quantity_out_of_range400La quantité est en dehors de la plage autorisée pour ce service.
invalid_comments400Le champ des commentaires est vide ou contient trop de lignes.
invalid_username400Le nom d’utilisateur n’est pas valide pour ce service.
invalid_subscription400Les paramètres de l’abonnement ne sont pas valides.
invalid_runs400La valeur « runs » n’est pas valide pour la livraison progressive (drip-feed).
invalid_interval400La valeur « interval » n’est pas valide pour la livraison progressive (drip-feed).
dripfeed_not_supported400Ce service ne prend pas en charge la livraison progressive (drip-feed).
missing_required_field400Un champ requis par ce type de service est manquant ou non valide.
service_inactive400Ce service n’est pas disponible à la commande pour le moment.
invalid_cursor400Le curseur de pagination n’est pas valide.
invalid_limit400Le paramètre « limit » est en dehors de la plage autorisée.
invalid_webhook_url400L’URL du webhook doit être une adresse https:// publique.
invalid_events400Un ou plusieurs types d’événements demandés sont inconnus.
batch_too_large400Trop d’éléments dans une seule requête groupée.
cancel_not_supported400Ce service ne prend pas en charge l’annulation.
refill_not_supported400Ce service ne propose pas de remplacement.
unknown_endpoint404Endpoint inconnu. Consultez la référence de l’API pour connaître les routes disponibles.
service_not_found404Aucun service ne correspond à cet id.
order_not_found404Aucune commande ne correspond à cet id sur votre compte.
refill_not_found404Aucun remplacement ne correspond à cet id sur votre compte.
webhook_not_found404Aucun endpoint webhook ne correspond à cet id sur votre compte.
order_not_cancelable409Cette commande ne peut plus être annulée en raison de son statut actuel.
cancel_rejected409Le fournisseur a refusé la demande d’annulation.
order_not_completed409Un remplacement ne peut être demandé que pour une commande terminée.
idempotency_key_reuse409Cette clé Idempotency-Key a déjà été utilisée avec un corps de requête différent.
idempotency_in_progress409Une requête portant cette clé Idempotency-Key est encore en cours de traitement. Réessayez dans quelques instants.
webhook_limit_reached409Vous avez atteint le nombre maximal d’endpoints webhook.
insufficient_balance402Solde insuffisant pour cette commande.
rate_limit_exceeded429Limite de requêtes dépassée. Consultez l’en-tête de réponse Retry-After.
provider_error502Le fournisseur en amont a renvoyé une erreur. Réessayez.
refill_failed502La demande de remplacement a été refusée par le fournisseur.
service_temporarily_unavailable503Ce service est temporairement indisponible. Réessayez plus tard.
internal_error500Une erreur inattendue s’est produite de notre côté.