Français

API de vérification par SMS

Dernière modification le 2026/11/03

Exécution des requêtes vers l'API

Deux API partagent une clé : une API REST avec JSON, et le format d'activation SMS que de nombreux outils utilisent déjà. Créez la clé sur la page Clé API de la console ; elle n'est affichée qu'une fois. Limite : 300 requêtes par minute par clé. Chaque commande a une fenêtre de code de 20 minutes, identique à celle de la console.

# REST API (JSON)
curl https://virtualsns.com/api/v1/balance -H "Authorization: Bearer YOUR_KEY"

# SMS activation format
curl "https://virtualsns.com/stubs/handler_api.php?api_key=YOUR_KEY&action=getBalance"
Codes de service et de pays

Les codes de service sont les noms dans les adresses de nos pages de service, par exemple kakaotalk, line, wechat, zalo, naver, shopee et whatsapp. Les codes de pays sont des codes ISO en minuscules : kr, jp, id, ph, vn, th, us. GET /services et GET /countries renvoient les listes complètes.

Flux typique
  1. Commandez un numéro avec le service et le pays. Enregistrez l'id.
  2. Entrez le numéro dans l'application et demandez-lui d'envoyer le SMS.
  3. Lisez la commande toutes les 4 secondes jusqu'à ce qu'un code soit disponible.
  4. Besoin d'un SMS supplémentaire ? Demandez un autre code, puis relisez. Terminé : finalisez la commande.
  5. Pas de code ? Annulez pour un remboursement complet. Sans appel, le remboursement se fait automatiquement à la fin de la fenêtre.

Python

import os, time, requests

API = "https://virtualsns.com/api/v1"
H = {"Authorization": f"Bearer {os.environ['VIRTUALSNS_KEY']}"}

order = requests.post(f"{API}/orders", headers=H,
    data={"service": "kakaotalk", "country": "kr"}).json()["order"]
print("Use this number:", order["phone"])

while True:
    o = requests.get(f"{API}/orders/{order['id']}", headers=H).json()["order"]
    if o["code"] or o["status"] in ("refunded", "canceled"):
        break
    time.sleep(4)
print("Code:", o["code"])

Node.js

const API = "https://virtualsns.com/api/v1";
const H = { Authorization: `Bearer ${process.env.VIRTUALSNS_KEY}` };

const { order } = await fetch(`${API}/orders`, {
  method: "POST", headers: H,
  body: new URLSearchParams({ service: "line", country: "jp" }),
}).then((r) => r.json());
console.log("Use this number:", order.phone);

let o = order;
while (!o.code && !["refunded", "canceled"].includes(o.status)) {
  await new Promise((r) => setTimeout(r, 4000));
  ({ order: o } = await fetch(`${API}/orders/${order.id}`, { headers: H }).then((r) => r.json()));
}
console.log("Code:", o.code);
Retournez les codes d'erreur

API REST

Les erreurs sont renvoyées au format JSON : {"error":{"code","message"}} avec ces statuts HTTP :

400Champ manquant ou incorrect (missing_filter, bad_json).
401Pas de clé ou clé incorrecte (no_key, bad_key).
402Crédit insuffisant (no_balance).
404Service, pays, commande ou point de terminaison inconnu.
409La commande ne peut pas faire cela maintenant (has_code, not_ready, too_many_open, no_numbers).
429Plus de 300 requêtes en une minute (rate_limited).

Format d'activation SMS

BAD_KEYClé API manquante ou incorrecte.
BAD_ACTIONAction inconnue.
BAD_SERVICECode de service inconnu.
BAD_COUNTRYLe service n'est pas vendu dans ce pays.
NO_BALANCECrédit insuffisant.
NO_NUMBERSAucun numéro disponible pour le moment. Réessayez dans un instant.
NO_ACTIVATIONID d'activation inconnu ou ne vous appartenant pas.
EARLY_CANCEL_DENIEDUn code est déjà arrivé, donc l'activation ne peut pas être annulée.
TOO_MANY_REQUESTSPlus de 300 requêtes en une minute.
NO_ACTIVATIONS20 activations sont déjà ouvertes.

Méthodes de l'API REST

https://virtualsns.com/api/v1

GET/services

Chaque code de service avec son nom, type et prix le plus bas. Aucune clé nécessaire.

curl "https://virtualsns.com/api/v1/services"
{"services":[{"code":"kakaotalk","name":"KakaoTalk","category":"social","from":"0.06"}]}
GET/countries

Chaque code de pays (ISO, minuscules) avec son nom et son indicatif téléphonique. Aucune clé nécessaire.

curl "https://virtualsns.com/api/v1/countries"
{"countries":[{"code":"kr","name":"South Korea","dial_code":"82"}]}
GET/prices

Prix en USD. Ajoutez un service, un pays ou les deux. Aucune clé nécessaire.

curl "https://virtualsns.com/api/v1/prices?service=line&country=jp"
{"prices":[{"service":"line","country":"jp","price":"5.40"}]}
GET/balance

Votre crédit en USD.

curl "https://virtualsns.com/api/v1/balance" \
  -H "Authorization: Bearer YOUR_KEY"
{"balance":"25.00","currency":"USD"}
POST/orders

Achète un numéro (201). Renvoie la commande avec le numéro de téléphone et l'heure de fin de la fenêtre.

curl -X POST https://virtualsns.com/api/v1/orders \
  -H "Authorization: Bearer YOUR_KEY" \
  -d service=kakaotalk -d country=kr
{"order":{"id":"AC-7K2M9QX4PB","service":"kakaotalk","country":"kr","phone":"+821023456789","status":"waiting","code":null,"expires_at":"2026-11-03T12:20:00.000Z"},"window_minutes":20}
GET/orders/AC-7K2M9QX4PB

Une commande avec son statut et chaque code reçu. Statuts : en attente, reçu, terminé, remboursé, annulé.

curl "https://virtualsns.com/api/v1/orders/AC-7K2M9QX4PB" \
  -H "Authorization: Bearer YOUR_KEY"
{"order":{"id":"AC-7K2M9QX4PB","status":"received","code":"482193","sms":"[Kakao] Verification code [482193]"}}
GET/orders

Vos commandes ouvertes (statut=all pour les 100 dernières).

curl "https://virtualsns.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer YOUR_KEY"
{"orders":[...]}
POST/orders/AC-7K2M9QX4PB/resend

Demande un autre code sur le même numéro, après le premier code et pendant que la fenêtre est ouverte. Pas de frais supplémentaires.

curl -X POST https://virtualsns.com/api/v1/orders/AC-7K2M9QX4PB/resend \
  -H "Authorization: Bearer YOUR_KEY"
{"order":{"status":"received","waiting_for_resend":true}}
POST/orders/AC-7K2M9QX4PB/finish

Ferme une commande qui a reçu son code.

curl -X POST https://virtualsns.com/api/v1/orders/AC-7K2M9QX4PB/finish \
  -H "Authorization: Bearer YOUR_KEY"
{"order":{"status":"finished"}}
POST/orders/AC-7K2M9QX4PB/cancel

Annule avant l'arrivée d'un code. Le prix total est remboursé sur votre crédit.

curl -X POST https://virtualsns.com/api/v1/orders/AC-7K2M9QX4PB/cancel \
  -H "Authorization: Bearer YOUR_KEY"
{"order":{"status":"canceled","refunded":"8.40"}}

Méthodes du format d'activation SMS

https://virtualsns.com/stubs/handler_api.php

Méthode getBalance

Votre crédit en USD.

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getBalance
ACCESS_BALANCE:12.50
Méthode getServicesList

Codes de service que vous pouvez acheter (JSON).

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getServicesList
{"status":"success","services":[{"code":"line","name":"LINE"}]}
Méthode getCountries

Codes de pays (ISO, minuscules) et indicatifs téléphoniques (JSON).

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getCountries
{"jp":{"name":"Japan","dial":"81"}}
Méthode getPrices

Prix en USD par pays et service. Les deux filtres sont optionnels.

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getPrices&service=line&country=jp
{"jp":{"line":{"cost":5.4,"count":100}}}
Méthode getNumber

Achète un numéro. Renvoie l'ID d'activation et le numéro avec son code de pays.

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getNumber&service=line&country=jp
ACCESS_NUMBER:AC-7K2M9QX4PB:819012345678
Méthode getStatus

STATUS_WAIT_CODE (pas encore de code), STATUS_OK :<code>, STATUS_WAIT_RETRY :<dernier code> (un autre code demandé), STATUS_CANCEL (annulé ou remboursé).

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=getStatus&id=AC-7K2M9QX4PB
STATUS_OK:482913
Méthode setStatus

status=1 prêt (ACCESS_READY), 3 un autre code (ACCESS_RETRY_GET), 6 terminé (ACCESS_ACTIVATION), 8 annulation avec un remboursement complet si aucun code n'est arrivé (ACCESS_CANCEL).

GET https://virtualsns.com/stubs/handler_api.php?api_key=KEY&action=setStatus&id=AC-7K2M9QX4PB&status=3
ACCESS_RETRY_GET
API de vérification SMS pour les numéros KakaoTalk, LINE et WeChat