Loading HstockPlus
Sélectionnez une action, remplissez les paramètres et envoyez une requête. Lorsque vous êtes connecté, votre clé API est chargée automatiquement.
Se met à jour automatiquement lorsque vous modifiez l'action ou les paramètres.
curl -X POST "https://hstockplus.net/api/v2" \
--data-urlencode "key=YOUR_API_KEY" \
--data-urlencode "action=categories"https://hstockplus.net/api/v2Toutes les requêtes API doivent être envoyées via HTTP POST à ce point de terminaison.
Limite par clé API ; seules les deux actions de liste ci-dessous sont limitées.
| Action | Limite |
|---|---|
| services | 1 call every 2 seconds, up to 3 calls in a row |
| products | 1 call per second, up to 3 calls in a row |
| inventory | Aucune limite |
| Toutes les autres actions (add, status, balance, …) | Aucune limite |
A limited call still returns HTTP 200, with the error below. retry_after_ms is how many milliseconds to wait before the next call. A key that keeps calling while limited (about 20 limited calls in one minute) is paused for 60 seconds.
{"error": "Rate limit exceeded", "retry_after_ms": 1400}To check price and stock of many products, call products once with productIds (up to 100 per call) instead of one services call per product. For the stock of each option of one product, use inventory.
IMPORTANT — URLs des images produit (imageUrl)
Lorsque Media CDN est activé, les champs `imageUrl` dans les réponses des listes de services, de produits et des informations de sous-catégorie utilisent le domaine CDN (https://cdn.hstockplus.org/...). Utilisez directement ces URL absolues dans votre application — ne les remplacez pas par hstockplus.com ou hstockplus.net.
https://cdn.hstockplus.org/uploads/products/gmail.webpOptionnel. Code de langue cible. Utilisez l'un des codes pris en charge listés ci-dessous. Lorsqu'il est défini et différent de en, les champs traduisibles sont renvoyés dans cette langue. Si une traduction n'est pas encore disponible, l'API renvoie l'anglais.
Codes de langue pris en charge
en(défaut — omettez lang ou utilisez en)zhdejapt-BRurbn-BDUtilisez ces valeurs exactes pour le paramètre lang ; alias : jp est accepté pour ja
Pris en charge sur les actions de lecture : categories, subcategory_info, services, products, inventory ((noms des sous-produits)), sms_projects, et sms_countries. Omettez lang ou utilisez en pour l'anglais.
Les paramètres de filtre catégorie et sous-catégorie sur les services/produits utilisent toujours les noms canoniques en anglais, même lorsque lang est défini.
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services" \
-d "lang=zh"Obtenez toutes les catégories et les sous-catégories de chaque catégorie. Utilisez ces valeurs pour filtrer la Liste des Services par catégorie ou sous-catégorie.
| Paramètre | Description | Requis |
|---|---|---|
| key | Votre clé API | Oui |
| action | categories | Oui |
| lang | Code de langue facultatif ; codes pris en charge dans la section Langue (lang) ci-dessus | No |
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=categories" \
-d "lang=zh"{
"categories": [
{
"category": "Instagram",
"subcategories": ["Followers", "Comments", "Likes"]
},
{
"category": "Email Accounts",
"subcategories": ["Gmail", "Outlook"]
}
]
}Obtenez les détails d'une sous-catégorie par subcategoryId, y compris la catégorie parente. Utilisez subcategoryId des lignes Products List.
| Paramètre | Description | Requis |
|---|---|---|
| key | Votre clé API | Oui |
| action | subcategory_info | Oui |
| subcategoryId | Identifiant de sous-catégorie de Products List | Oui |
| lang | Code de langue facultatif ; codes pris en charge dans la section Langue (lang) ci-dessus | No |
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=subcategory_info" \
-d "subcategoryId=674a1f77bcf86cd799439099" \
-d "lang=zh"{
"subcategoryId": "674a1f77bcf86cd799439099",
"name": "Gmail",
"slug": "gmail",
"imageUrl": "https://cdn.hstockplus.org/uploads/subcategories/gmail.webp",
"description": "Verified Gmail accounts",
"category": {
"categoryId": "674a1f77bcf86cd799439088",
"name": "Email Accounts",
"slug": "email-accounts"
}
}Liste les boutiques actives avec les informations de base, le nombre de produits et les évaluations. Les noms des boutiques sont masqués pour la confidentialité.
| Paramètre | Description | Requis |
|---|---|---|
| key | Votre clé API | Oui |
| action | shops | Oui |
| page | Page number (default 1). | No |
| limit | Items per page (default 20). | No |
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=shops"Avec pagination :
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=shops" \
-d "page=1" \
-d "limit=20"Liste les codes coupon de toutes les boutiques utilisables dès maintenant, avec les conditions requises pour chacun. Transmettez un code comme coupon à action=add. Les codes créés uniquement pour votre compte (par exemple un devis de prix de gros issu d'un ticket) sont inclus et marqués private.
| Paramètre | Description | Requis |
|---|---|---|
| key | Votre clé API | Oui |
| action | coupons | Oui |
| shop | Uniquement les coupons de cette boutique (shopId issu de action=shops). | No |
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=coupons"{
"coupons": [
{
"code": "SAVE10",
"type": "percentage",
"value": 10,
"shopId": "6650a1f77bcf86cd79943901",
"shopSlug": "example-shop",
"shopName": "Example Shop",
"appliesTo": "shop",
"minPurchase": 20,
"remainingUses": 87,
"expiresAt": "2026-11-30T23:59:59.000Z"
},
{
"code": "BULK500",
"type": "percentage",
"value": 5,
"shopId": "6650a1f77bcf86cd79943901",
"shopSlug": "example-shop",
"shopName": "Example Shop",
"appliesTo": "services",
"services": [110469, 110470],
"minQuantity": 100,
"quantityTiers": [
{ "minQuantity": 100, "value": 5 },
{ "minQuantity": 500, "value": 12 }
],
"maxUsesPerUser": 1,
"remainingUses": 40
}
],
"total": 2
}| Champ | Signification |
|---|---|
| type / value | percentage : la valeur est un pourcentage de remise. fixed : la valeur est une remise en USD sur la commande. Avec quantityTiers, la valeur est celle du palier le plus bas. |
| appliesTo | shop : n'importe quel produit de cette boutique. services : uniquement les produits dont les numéros de service figurent dans services. Les coupons de boutique ne s'appliquent pas aux services de croissance (SMM). |
| minPurchase | Le total de la commande avant remises doit atteindre au moins ce nombre d'USD. |
| minQuantity | La quantité commandée doit être au moins égale à cette valeur. |
| quantityTiers | Plus la quantité est grande, plus la remise est élevée ; le palier le plus haut atteint par votre quantité s'applique. |
| maxDiscount | Montant maximal en USD que le coupon déduit d'une commande (uniquement si plafonné). |
| maxUsesPerUser | Nombre de fois qu'un même compte peut utiliser le code (uniquement si limité). |
| remainingUses | Utilisations restantes tous acheteurs confondus. |
| expiresAt | Le code cesse de fonctionner après cette date (omis s'il n'expire pas). |
| private | true si le code a été créé uniquement pour votre compte. |
Un coupon est déduit du montant restant après votre remise revendeur. Les champs facultatifs sont omis lorsque le coupon n'a pas de condition correspondante.
Listez uniquement les produits de la marketplace (pas de services SMM). Mêmes champs que les lignes de produits dans la liste des services, y compris id (identifiant d'entité produit), service (numéro de service convivial), description et imageUrl. productIds (facultatif) ne renvoie que ces produits (numéros de service conviviaux de la liste et/ou identifiants d'entité produit, séparés par des virgules ou en tableau JSON, max 100). sort=sold (facultatif) trie les résultats par unités de commande payées décroissantes (meilleures ventes en premier).
| Paramètre | Description | Requis |
|---|---|---|
| key | Votre clé API | Oui |
| action | products | Oui |
| page | Page number (default 1). Used when limit > 0. | No |
| limit | Items per page (default 0 = return all). | No |
| category | Filtrer par nom de catégorie (issu de Get Categories). Ne renvoie que les produits de cette catégorie. | No |
| subcategory | Filtrer par nom de sous-catégorie (issu de Get Categories). Ne renvoie que les produits de cette sous-catégorie. | No |
| shopId | Filtrer par ID de boutique (Shops List) ; ne renvoie que les produits de cette boutique | No |
| productIds | Optional list of product IDs (service numbers and/or entity ids). Comma-separated, JSON array, or repeated fields. Returns only those products (max 100). | No |
| isRecommended | Facultatif : true pour ne renvoyer que les produits avec isRecommended === true | No |
| sort | Facultatif. sold = trier par unités commandées payées en ordre décroissant (meilleurs ventes en premier). Omettre pour conserver l'ordre par défaut du cache. | No |
| lang | Code de langue facultatif ; codes pris en charge dans la section Langue (lang) ci-dessus | No |
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=products"Filtrer par identifiants de produits :
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=products" \
-d "productIds=2,5,9"Avec pagination :
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=products" \
-d "page=1" \
-d "limit=50"Filtrer par catégorie ou sous-catégorie :
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=products" \
-d "category=Accounts-Email"
# Or filter by subcategory:
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=products" \
-d "subcategory=Gmail"Meilleures ventes dans une sous-catégorie :
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=products" \
-d "subcategory=Twitter/X" \
-d "sort=sold" \
-d "page=1" \
-d "limit=10"Produits recommandés uniquement :
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=products" \
-d "isRecommended=true"Obtenez tous les services disponibles avec pagination optionnelle. Chaque ligne comprend l'id (identifiant de l'entité), le service (numéro de service convivial), le stock et le type d'entité (smm ou product). Le paramètre optionnel entityType ne renvoie que les lignes product ou smm. Les paramètres optionnels category et subcategory ne renvoient que les services de cette catégorie ou sous-catégorie (valeurs issues de l'API Get Categories). Le paramètre optionnel shopId ne renvoie que les produits et services de cette boutique (utilisez shopId depuis la liste des boutiques). Le paramètre optionnel productIds ne renvoie que les lignes correspondantes (numéros de service conviviaux et/ou identifiants d'entité ; correspond aux lignes product ou smm). Utilisez action=products pour filtrer uniquement les produits.
| Paramètre | Description | Requis |
|---|---|---|
| key | Votre clé API | Oui |
| action | services | Oui |
| page | Page number (default 1). Used when limit > 0. | No |
| limit | Items per page (default 0 = return all). | No |
| category | Filtrer par nom de catégorie (issu de Get Categories). Ne renvoie que les services de cette catégorie. | No |
| subcategory | Filtrer par nom de sous-catégorie (issu de Get Categories). Ne renvoie que les services de cette sous-catégorie. | No |
| shopId | Filtrer par ID de boutique (issu de Shops List). Ne renvoie que les produits et services SMM de cette boutique. | No |
| entityType | Filtre optionnel : product ou smm. Renvoie uniquement les produits de la place de marché ou uniquement les services SMM. | No |
| productIds | Liste facultative d'ID (numéros de service conviviaux et/ou ID d'entité). Séparés par des virgules, tableau JSON ou champs répétés. Renvoie les lignes de produits ou de SMM correspondantes. Utilisez action=products pour les produits uniquement. | No |
| lang | Code de langue facultatif ; codes pris en charge dans la section Langue (lang) ci-dessus | No |
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services" \
-d "lang=zh"Avec pagination :
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services" \
-d "page=1" \
-d "limit=50"Filtrer par catégorie ou sous-catégorie :
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services" \
-d "category=Instagram"
# Or filter by subcategory:
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services" \
-d "subcategory=Followers"Filtrer par type d'entité :
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services" \
-d "entityType=product"{
"services": [
{
"id": "507f1f77bcf86cd799439011",
"service": 1,
"name": "Instagram Followers",
"type": "Default",
"category": "Instagram",
"rate": "0.50",
"min": 100,
"max": 10000,
"refill": true,
"cancel": false,
"stock": 10000,
"entityType": "smm",
"autoDelivery": true
},
{
"id": "507f1f77bcf86cd799439012",
"service": 2,
"name": "Gmail Account - USA",
"type": "Default",
"category": "Accounts-Email",
"rate": "25.00",
"min": 1,
"max": 50,
"refill": false,
"cancel": false,
"stock": 50,
"entityType": "product",
"autoDelivery": true,
"description": "Verified Gmail account with recovery email",
"imageUrl": "https://cdn.hstockplus.org/uploads/products/gmail.webp",
"isRecommended": true,
"subcategoryId": "674a1f77bcf86cd799439099",
"sold": 5300,
"sellerRating": 4.0,
"sellerReviewCount": 30,
"returningBuyerRate": 0.52,
"warrantyHours": 12
}
],
"total": 150,
"page": 1,
"limit": 50,
"total_pages": 3
}Chaque ligne inclut id (identifiant de l'entité) et service (numéro de service convivial pour les commandes), stock, entityType (smm ou product) et autoDelivery. Les lignes product incluent également description, imageUrl, isRecommended et subcategoryId. Lorsque limit est 0 ou omis, tous les services sont renvoyés et page/limit égalent le total.
Les lignes de produits contiennent aussi les chiffres affichés sur la page du produit : service est le numéro du produit (#48071 sur la page), sellerRating et sellerReviewCount sont la note en étoiles du vendeur et son nombre d'avis, returningBuyerRate est la part d'acheteurs récurrents du vendeur (0.52 = 52 %), sold est le nombre d'unités vendues, et warrantyHours est la durée du service après-vente en heures à compter de la livraison (0 = pas de service après-vente). sellerRating, sellerReviewCount et returningBuyerRate sont omis lorsque le vendeur n'a pas de note ou trop peu d'acheteurs.
Obtient le stock actuel et la disponibilité d'un service via son ID (le même que dans la liste des services). Pour les produits de la marketplace, le JSON inclut subproducts : un tableau de variantes actives, chacune avec subproductId, name, stock (stock affiché pour cette variante) et ses propres prix et limites de commande : available, rate, min, max, et packs pour les options vendues en packs fixes.
| Paramètre | Description | Requis |
|---|---|---|
| key | Votre clé API | Oui |
| action | inventory | Oui |
| service | ID du service (issu de la liste des services) | Oui |
| lang | Code de langue facultatif ; codes pris en charge dans la section Langue (lang) ci-dessus | No |
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=inventory" \
-d "service=23501"{
"service": 1,
"stock": 10000,
"available": true,
"rate": "0.5000",
"entityType": "smm",
"autoDelivery": true
}{
"service": 23501,
"stock": 42,
"available": true,
"rate": "25.0000",
"min": 1,
"max": 42,
"entityType": "product",
"autoDelivery": true,
"subproducts": [
{ "subproductId": "674a1f77bcf86cd799439011", "name": "1 Month", "stock": 42, "available": true, "rate": "25.0000", "min": 1, "max": 42 },
{ "subproductId": "674a1f77bcf86cd799439012", "name": "3 Months", "stock": 0, "available": false, "rate": "60.0000", "min": 1, "max": 0 },
{
"subproductId": "674a1f77bcf86cd799439013", "name": "Pack", "stock": 500, "available": true, "rate": "0.0190", "min": 100, "max": 100,
"packs": [
{ "quantity": 100, "price": "1.9000", "discountPercent": 5 },
{ "quantity": 500, "price": "9.0000", "discountPercent": 10 }
]
}
],
"warrantyHours": 24
}La réponse inclut le tarif (par unité, même format de chaîne que la liste des services), le type d’entité (smm ou product), et la livraison automatique (true = livraison automatique, false = le fournisseur exécute manuellement). Pour les services de type produit, les valeurs min et max correspondent à la sous‑ligne principale de la liste des services ; si cette sous‑ligne ne peut pas exécuter votre commande supplémentaire, la plateforme peut sélectionner une autre sous‑ligne et facturer son prix unitaire. Le tableau subproducts liste chaque variante active avec le stock affiché ; les réponses d’inventaire SMM omettent les sous‑produits.
Chaque sous-produit a ses propres rate, min et max : c'est le prix unitaire et la plage de quantité qui s'appliquent lorsque vous transmettez ce subproductId, avant toute remise revendeur de votre compte. Pour les options vendues en packs fixes, packs liste chaque pack en stock (quantity, total price, discountPercent) et vous devez commander l'une de ces quantités ; rate, min et max décrivent alors le plus petit pack.
warrantyHours (products only) is the product's after-sales window in hours counted from delivery, the same figure as in the services list; 0 means no after-sales.
Place a standard order with link and quantity. Link: for SMM services (e.g. followers, likes) — required, use the URL to the content (e.g. Instagram post); for product orders (e.g. accounts) — optional, if empty the system uses your account email for delivery. For products with multiple options (Select Option on the website), pass subproductId (from action=inventory) to choose which option to order — otherwise the default option is used.
| Paramètre | Description | Requis |
|---|---|---|
| key | Votre clé API | Oui |
| action | add | Oui |
| service | Identifiant de service | Oui |
| link | Lien : pour les commandes SMM (p. ex. followers, likes, commentaires) : obligatoire — URL ou lien du contenu (p. ex. URL d'une publication Instagram). Pour les commandes de produits (p. ex. comptes) : facultatif — e-mail de livraison ou référence ; si vide, le système utilise l'e-mail de votre compte. | No |
| quantity | Quantité à commander | Oui |
| subproductId | Produits uniquement : choisissez une option précise (variante Select Option) au lieu de l'option par défaut — utilisez la valeur subproductId renvoyée par action=inventory pour ce service. Facultatif ; non utilisé pour les services de croissance/SMM. | No |
| coupon | Code coupon (issu de action=coupons ou d'une page de boutique). Facultatif. Il s'applique en plus de toute remise revendeur, avec les mêmes conditions que lors du paiement sur le site ; si le code ne peut pas être utilisé, la commande n'est pas passée et l'erreur en indique la raison. | No |
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=1" \
-d "link=https://instagram.com/username" \
-d "quantity=1000"
# Product with multiple options: pick the subproductId from action=inventory
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=110469" \
-d "quantity=1" \
-d "subproductId=674a1f77bcf86cd799439012"
# With a coupon code from action=coupons
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=110469" \
-d "quantity=10" \
-d "coupon=SAVE10"{
"order": 23501,
"entityType": "product",
"charge": "22.5000",
"couponDiscount": "2.5000",
"warrantyHours": 24
}charge is what was taken from your balance. couponDiscount is present only when a coupon was applied. warrantyHours (products only) is the after-sales window in hours counted from delivery, 0 = no after-sales; action=status returns the exact end time as warranty_expires_at.
Obtenir le statut d'une commande.
| Paramètre | Description |
|---|---|
| key | Votre clé API |
| action | status |
| order | Numéro de commande |
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=status" \
-d "order=23501"{
"status": "In progress",
"charge": "5.00",
"start_count": 1000,
"remains": 500,
"currency": "USD",
"autoDelivery": true
}Pour les commandes de produits (ex. comptes), lorsque la commande est livrée en totalité ou partiellement, la réponse inclut un tableau "accounts" avec les identifiants des comptes livrés (une chaîne de caractères par compte). Pour une livraison partielle, seuls les comptes livrés jusqu'à présent sont renvoyés.
autoDelivery : true si la commande est exécutée automatiquement (par exemple, SMM, produits auto/inventaire) ; false si le fournisseur doit exécuter manuellement (peut prendre du temps).
{
"status": "Completed",
"charge": "10.00",
"start_count": 5,
"remains": 0,
"currency": "USD",
"entityType": "product",
"autoDelivery": true,
"accounts": [
"user1:pass1",
"user2:pass2"
]
}Une commande remboursée renvoie Canceled, et une commande partiellement remboursée renvoie Partial. Si une somme a été remboursée, la réponse contient aussi « refunded » avec le montant remboursé en USD.
Certains produits (par exemple les comptes Telegram avec archives de session) sont livrés sous forme de fichiers ZIP à la place des identifiants texte, ou en plus de ceux-ci. La réponse contient alors un tableau « files ». Chaque fichier est un élément livré. Téléchargez un fichier avec action=order_file.
{
"status": "Completed",
"charge": "12.00",
"start_count": 0,
"remains": 0,
"currency": "USD",
"entityType": "product",
"autoDelivery": false,
"files": [
{
"id": "66e6b2f0c3a1d2e4f5a6b7c8",
"name": "sessions-001.zip",
"size": 482113,
"uploaded_at": "2026-09-15T08:30:00.000Z"
}
]
}Télécharge un fichier de livraison (ZIP) de votre commande. En cas de succès, le corps de la réponse est le fichier lui-même (Content-Type: application/zip) ; en cas d'échec, c'est un JSON avec un champ « error ».
| Paramètre | Description |
|---|---|
| key | Votre clé API |
| action | order_file |
| order | Numéro de commande |
| file | ID de fichier issu du tableau « files » de action=status |
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=order_file" \
-d "order=23501" \
-d "file=66e6b2f0c3a1d2e4f5a6b7c8" \
-o sessions-001.zip{
"error": "File not found"
}Vérifiez l'en-tête Content-Type avant d'enregistrer : application/zip signifie que c'est le fichier, application/json signifie une erreur.
Annuler une ou plusieurs commandes (format batch compatible PerfectPanel). Chaque commande éligible est remboursée sur votre solde.
Toutes les conditions suivantes doivent être remplies. Utilisez allowcancel pour vérifier l'éligibilité sans effectuer de remboursement.
Une livraison partielle donne lieu à un remboursement partiel proportionnel ; les comptes livrés sont conservés.
| Paramètre | Description |
|---|---|
| key | Votre clé API |
| action | cancel |
| orders | IDs de commande (séparés par une virgule, jusqu'à 100 IDs) |
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=cancel" \
-d "orders=23501,23502"[
{
"order": 23501,
"cancel": 1
},
{
"order": 23502,
"cancel": {
"error": "Incorrect order ID"
}
}
]Vérifiez si une ou plusieurs commandes peuvent être annulées immédiatement (mêmes règles d'éligibilité que pour l'annulation, mais aucun remboursement n'est traité). Utilisez cette fonction avant d'appeler l'annulation pour éviter des requêtes échouées. Prend en charge les identifiants de commandes groupés (séparés par des virgules, jusqu'à 100).
Toutes les conditions suivantes doivent être remplies. Utilisez allowcancel pour vérifier l'éligibilité sans effectuer de remboursement.
Lorsque allowcancel est à 1, la réponse inclut refundAmount (le montant que l'annulation rembourserait).
| Paramètre | Description |
|---|---|
| key | Votre clé API |
| action | allowcancel |
| orders | IDs de commande (séparés par une virgule, jusqu'à 100 IDs) |
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=allowcancel" \
-d "orders=23501,23502"[
{
"order": 23501,
"allowcancel": 1,
"refundAmount": 5.00
},
{
"order": 23502,
"allowcancel": 0,
"error": "Early auto refund is not available for this order",
"reason": "BEFORE_MIN_WAIT",
"eligibleAfter": "2026-06-23T12:30:00.000Z"
}
]Obtenez votre solde actuel.
| Paramètre | Description |
|---|---|
| key | Votre clé API |
| action | balance |
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=balance"{
"balance": "100.00",
"currency": "USD"
}Order count and totals for a date range, for reconciliation. Counts the same orders as the Your orders page.
| Paramètre | Description |
|---|---|
| key | Votre clé API |
| action | orders_summary |
| date_from | Optional. First day, YYYY-MM-DD, inclusive. |
| date_to | Optional. Last day, YYYY-MM-DD, inclusive. |
| tz | Optional. Your timezone, as minutes east of UTC (480 for UTC+8) or +08:00. Days start at midnight in this timezone. Default UTC. |
curl -X POST https://hstockplus.net/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=orders_summary" \
-d "date_from=2026-10-31" \
-d "date_to=2026-10-31" \
-d "tz=480"{
"date_from": "2026-10-30T16:00:00.000Z",
"date_to": "2026-10-31T16:00:00.000Z",
"orders": 126,
"refunded_orders": 3,
"gross": "412.5000",
"refunded": "6.2000",
"net": "406.3000",
"currency": "USD"
}date_from and date_to echo the range as UTC instants (date_to is exclusive). Only paid orders are counted; unpaid and failed orders are ignored. orders is the number of paid orders, gross is what you paid, refunded is what came back to you, net = gross - refunded. Call at most once every 2 seconds.
Points de terminaison dédiés pour les services de vérification par SMS.
Les commandes SMS ont leurs propres ID de commande. Utilisez sms_code, sms_status et sms_cancel avec elles ; status, cancel et allowcancel sont réservés aux commandes de produits et SMM.
Action: sms_projects
| Paramètre | Description |
|---|---|
| key | Votre clé API |
| action | sms_projects |
| country | Facultatif. Filtrer par ID de pays (p. ex. « us », « gb ») |
| lang | Code de langue facultatif ; codes pris en charge dans la section Langue (lang) ci-dessus |
[
{
"project_id": "65f...",
"name": "OpenAI / ChatGPT",
"price": "0.5000",
"country_id": "us",
"country_title": "United States"
}
]Action: sms_countries
| Paramètre | Description |
|---|---|
| key | Votre clé API |
| action | sms_countries |
| lang | Code de langue facultatif ; codes pris en charge dans la section Langue (lang) ci-dessus |
[
{
"country_code": "+1",
"country_name": "United States"
},
{
"country_code": "+44",
"country_name": "United Kingdom"
}
]Action: add_sms
| Paramètre | Description | Requis |
|---|---|---|
| key | Votre clé API | |
| action | add_sms | |
| project_id | ID de projet issu de sms_projects | Oui |
| quantity | Number of numbers (1-10) | No (Default 1) |
| country | Country: ISO code (e.g. 'us') or dial code from sms_countries (e.g. '+1') | No |
| phone | Numéro de téléphone à réutiliser | No |
{
"orders": [
{
"order": 12345,
"phone": "4055123415",
"dial_code": "+1",
"phone_full": "+14055123415",
"country": "US",
"expires_at": "2026-01-01T12:15:00.000Z",
"status": "active"
}
]
}Action: sms_code
| Paramètre | Description |
|---|---|
| key | Votre clé API |
| action | sms_code |
| order | Numéro de commande |
{
"status": "completed",
"code": "123456",
"sms_content": "Your verification code is 123456"
}
// OR
{
"status": "waiting",
"message": "Waiting for code"
}
// OR, once expires_at has passed without a code (call sms_cancel for a refund)
{
"status": "expired",
"message": "No code arrived before the number expired. Call action=sms_cancel for a refund."
}Action: sms_status
| Paramètre | Description |
|---|---|
| key | Votre clé API |
| action | sms_status |
| order | Numéro de commande |
{
"status": "code_received",
"phone": "4055123415",
"dial_code": "+1",
"phone_full": "+14055123415",
"code": "123456",
"charge": "0.5000",
"currency": "USD",
"refunded": false,
"expires_at": "2026-01-01T12:15:00.000Z"
}
// status: phone_acquired | code_received | expired | releasedAction: sms_cancel
Libère le numéro. Si aucun code n'a été reçu, la totalité du montant est remboursée sur votre solde, y compris après l'expiration du numéro. Les commandes ayant déjà reçu un code ne peuvent pas être annulées.
| Paramètre | Description |
|---|---|
| key | Votre clé API |
| action | sms_cancel |
| order | ID de commande issu de add_sms |
{
"order": 12345,
"status": "cancelled",
"refunded": true,
"refund_amount": "0.5000",
"currency": "USD"
}
// OR
{
"error": "Verification code already received, cannot release"
}Réponses d'erreur courantes que vous pouvez rencontrer.
{"error": "Invalid API key"}{"error": "Invalid action"}{"error": "Service ID is required"}{"error": "Insufficient balance"}{"error": "Order not found"}{"error": "Service not found"}Besoin d'aide ? Contactez-nous à support@hstockplus.com