Aller au contenu principal
116
Pays
133 services, 400 routes opérateurs, plus de 15 400 tarifs en direct. Crypto uniquement, aucun contrôle d'identité.
Louer un numéro

SmsNoKYC pour développeurs : une vérification par SMS scriptable

Scriptez toute la boucle de vérification via une seule interface JSON. 116 pays, 133 services, 400 routes opérateur et plus de 15 400 prix en direct se cachent derrière une poignée de points d'accès : allouer un numéro, capter son code entrant, conserver une location jusqu'à 90 jours, régler en crypto. Il n'existe aucune clé API ici — une seed phrase est le seul identifiant que vous présenterez jamais.

Temps de lecture : 5 min REST · JSON · OpenAPI 3.0 Spec OpenAPI →

Authentification requise. Les sessions reposent sur des cookies. Connectez-vous avec votre seed phrase — via le site ou directement sur le point d'authentification documenté ci-dessous — et chaque requête suivante hérite d'elle-même de cette session.

Conçu pour les scripts, les pipelines et les agents autonomes

Les fournisseurs OTP traditionnels veulent des contrats signés, une conformité validée et des minimums mensuels engagés avant que votre première requête ne parte. SmsNoKYC inverse l'ordre : détenez une seed phrase, chargez un solde à partir de $25 dans l'une des 8 cryptomonnaies — Bitcoin, Monero, Ethereum, Litecoin, TRON, USDT, SOL parmi elles — et commencez à appeler depuis n'importe quel client HTTPS que vous utilisez déjà. La facturation est mesurée par numéro à partir de $0.01, sur plus de 15 400 points de prix actifs.

Au quotidien, les endpoints vérifient les flux d'inscription en CI, transmettent des codes OTP à des navigateurs headless et des flottes de scrapers, maintiennent des comptes Telegram ou WhatsApp actifs grâce à des locations dédiées de 7 à 90 jours, et répartissent la vérification sur 116 pays avec un contrôle explicite de 400 routes opérateurs réparties en trois niveaux — virtuel, physique, premium. Les agents IA accèdent au même catalogue via un serveur MCP natif, décrit sur la page agents, permettant à un modèle utilisant des outils d'acheter des numéros et de lire des codes sans code de liaison sur mesure.

Authentification

Les sessions sont basées sur des cookies — il n'y a pas de clé porteur à générer ou à faire tourner. La connexion programmatique se fait en trois étapes :

  1. Envoyez votre seed phrase en POST à /auth-api.php
  2. Capturez le cookie défini dans la réponse
  3. Joignez ce cookie à chaque appel suivant
POST /auth-api.php

Échange votre phrase de récupération contre une session active.

ParamètreTypeRequisDescription
actionstringrequisDoit être "login"
seedstringrequisLa seed de 16 caractères liée à votre compte (format AbC3-dEf4-gHj5-kLm6)
cURL
Python
JavaScript
# Login and save session cookie curl -X POST https://smsnokyc.com/auth-api.php \ -d "action=login&seed=AbC3-dEf4-gHj5-kLm6" \ -c cookies.txt
import requests session = requests.Session() resp = session.post("https://smsnokyc.com/auth-api.php", data={ "action": "login", "seed": "AbC3-dEf4-gHj5-kLm6" }) data = resp.json() print(data) # {"success": true, "user": {...}} # session object now holds the cookie for all future requests
const resp = await fetch("https://smsnokyc.com/auth-api.php", { method: "POST", credentials: "include", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "action=login&seed=AbC3-dEf4-gHj5-kLm6" }); const data = await resp.json(); console.log(data); // {success: true, user: {...}}
Réponse de succès
{ "success": true, "user": { "id": 42, "prefix": "AbC3", "balance": "74.50" } }
Réponse d'erreur
{ "success": false, "error": "Invalid seed." }

URL de base

Chaque endpoint dépend d'un seul modèle d'URL :

https://smsnokyc.com/api.php?action={action}

Les réponses arrivent toujours au format JSON. Les corps de requête POST peuvent être envoyés en application/json ou en application/x-www-form-urlencoded.

Limites de requêtes

Deux règles régissent le volume de requêtes :

Point d'accèsLimiteFenêtre
Authentification5 tentatives15 minutes
Tous les autres points de terminaisonPas de limite stricte—

Limitation de débit : la connexion accepte 5 tentatives par 15 minutes ; les autres endpoints n'ont actuellement pas de plafond fixe, bien qu'un abus soutenu puisse être ralenti en amont. Espacez vos appels raisonnablement.

Gestion des erreurs

Chaque échec revient sous forme d'objet JSON contenant un champ error :

{ "error": "Description of what went wrong" }
Code HTTPSignification
200Succès (vérifiez le corps de la réponse pour les erreurs au niveau applicatif)
403Jeton CSRF invalide
405Méthode HTTP incorrecte (ex. GET sur un point de terminaison POST uniquement)
429Limite de débit dépassée

Erreurs au niveau applicatif que vous rencontrerez le plus souvent :

ErreurCause
"Login required"Session expirée ou non authentifié
"Insufficient balance"Fonds insuffisants — inclut les champs need et have
"Service not available for this country"Pas de stock ou service inactif pour le pays sélectionné
"Missing country or service"Les paramètres requis n'ont pas été fournis

Lister les pays

GET /api.php?action=countries

Liste tous les pays disposant actuellement de stock — 116 au dernier comptage. Endpoint ouvert, aucune session requise.

cURL
Python
JavaScript
curl https://smsnokyc.com/api.php?action=countries
resp = session.get("https://smsnokyc.com/api.php", params={"action": "countries"}) countries = resp.json() for c in countries: print(c["code"], c["name"])
const resp = await fetch("https://smsnokyc.com/api.php?action=countries"); const countries = await resp.json();
Réponse
[ { "id": 1, "code": "us", "name": "USA" }, { "id": 2, "code": "gb", "name": "UK" }, { "id": 3, "code": "de", "name": "Germany" } ]

Lister les services

GET /api.php?action=services&country={code}

Récupère la fiche de service pour un pays, prix en direct et stock inclus. Omettez le paramètre pays pour recevoir le catalogue complet des 133 services sans tarification.

ParamètreTypeRequisDescription
countrystringoptionnelCode pays ISO 3166-1 alpha-2 (ex. us, gb, de)
Réponse (avec pays)
[ { "id": 12, "name": "WhatsApp", "slug": "whatsapp", "icon_code": "WA", "icon_color": "#25d366", "category": "social", "price": "0.35", "stock": 847 } ]

Lister les opérateurs

GET /api.php?action=operators&country={code}

Recense les routes opérateurs derrière un pays. Chaque opérateur porte un niveau ainsi qu'un multiplicateur appliqué au prix de base du service.

ParamètreTypeRequisDescription
countrystringrequisCode pays ISO 3166-1 alpha-2
Réponse
[ { "id": 5, "name": "T-Mobile", "type": "physical", "price_multiplier": "1.50", "icon_slug": "tmobile", "icon_domain": "t-mobile.com" } ]

Types d'opérateurs : virtual — basé VoIP, coût le plus bas, parfois rejeté par les plateformes strictes. physical — véritable carte SIM physique, meilleure acceptation. premium — acceptation maximale et livraison la plus rapide, environ 10 secondes.

Acheter un numéro (Activation SMS)

POST /api.php?action=buy

Réserve un numéro pour une seule vérification. Il reste à vous pendant 20 minutes ; si aucun message n'arrive dans ce délai, les frais reviennent automatiquement sur votre solde.

ParamètreTypeRequisDescription
countrystringrequisCode pays (ex. us)
service_idintegerrequisID du service depuis Liste des services
operator_idintegeroptionnelID de l'opérateur depuis Liste des opérateurs. Omettre pour l'opérateur par défaut.
cURL
Python
JavaScript
curl -X POST https://smsnokyc.com/api.php?action=buy \ -b cookies.txt \ -H "Content-Type: application/json" \ -d '{"country":"us","service_id":12,"operator_id":5}'
resp = session.post("https://smsnokyc.com/api.php?action=buy", json={ "country": "us", "service_id": 12, "operator_id": 5 }) order = resp.json() print(f"Order #{order['order_id']} — ${order['price']}")
const resp = await fetch("https://smsnokyc.com/api.php?action=buy", { method: "POST", credentials: "include", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ country: "us", service_id: 12, operator_id: 5 }) }); const order = await resp.json();
Réponse de succès
{ "success": true, "order_id": 1847, "price": 0.53, "balance": "73.97" }
Erreur : Solde insuffisant
{ "error": "Insufficient balance", "need": 0.53, "have": "0.10" }

Lister les commandes

GET /api.php?action=orders

Fournit vos 50 dernières commandes avec leurs numéros et tout code capté. Interrogez ce point pendant qu'une activation attend son SMS.

Réponse
[ { "id": 1847, "price": "0.53", "status": "completed", "phone_number": "+12025551234", "sms_code": "847293", "created_at": "2026-04-09 14:32:00", "country_code": "us", "country_name": "USA", "service_name": "WhatsApp", "operator_name": "T-Mobile" } ]

Statuts de commande : active — en attente d'un message. completed — code récupéré. cancelled — clôturé par vous. refunded — recrédité automatiquement après un délai sans réponse. expired — fenêtre expirée.

Obtenir le prix de location

GET /api.php?action=rental_price&country={code}&operator_id={id}&duration={days}

Indique le coût de la détention d'un numéro dédié chez un opérateur donné pour une durée choisie.

ParamètreTypeRequisDescription
countrystringrequisCode pays
operator_idintegerrequisID de l'opérateur
durationintegerrequisDurée de location en jours : 7, 14, 30, ou 90
Réponse
{ "price": "12.50", "duration": 30, "operator": "T-Mobile", "type": "physical", "country": "USA" }

Louer un numéro

POST /api.php?action=rental_buy

Réserve un ou plusieurs numéros dédiés. Chacun reste exclusivement à vous pendant toute la durée — 7 à 90 jours — et accepte des SMS entrants illimités de n'importe quel service.

ParamètreTypeRequisDescription
countrystringrequisCode pays
operator_idintegerrequisID de l'opérateur
durationintegerrequis7, 14, 30, ou 90 jours
qtyintegeroptionnelNombre de numéros à louer (1–10, par défaut : 1)
Réponse de succès
{ "success": true, "order_ids": [1848, 1849], "total": 25.00, "qty": 2, "unit_price": 12.50, "duration": 30, "balance": "49.50" }

Obtenir les infos utilisateur

GET /api.php?action=user

Signale le compte derrière la session en cours, solde inclus. Un seul appel sert à la fois de vérification de connexion et de vérification des fonds.

Authentifié
{ "logged_in": true, "id": 42, "prefix": "AbC3", "balance": "74.50" }
Non authentifié
{ "logged_in": false }

Script de bout en bout

Le script ci-dessous exécute toute la boucle en Python — session, recherche dans le catalogue, achat, puis interrogation jusqu'à l'arrivée du code :

Python
import requests, time BASE = "https://smsnokyc.com" SEED = "AbC3-dEf4-gHj5-kLm6" s = requests.Session() # 1. Authenticate s.post(f"{BASE}/auth-api.php", data={"action": "login", "seed": SEED}) # 2. Check balance user = s.get(f"{BASE}/api.php?action=user").json() print(f"Balance: ${user['balance']}") # 3. Get services for USA services = s.get(f"{BASE}/api.php?action=services&country=us").json() whatsapp = next(svc for svc in services if svc["name"] == "WhatsApp") print(f"WhatsApp: ${whatsapp['price']} ({whatsapp['stock']} in stock)") # 4. Buy a number order = s.post(f"{BASE}/api.php?action=buy", json={ "country": "us", "service_id": whatsapp["id"] }).json() print(f"Order #{order['order_id']} created") # 5. Poll for SMS code for _ in range(60): orders = s.get(f"{BASE}/api.php?action=orders").json() my_order = next(o for o in orders if o["id"] == order["order_id"]) if my_order["sms_code"]: print(f"SMS code: {my_order['sms_code']}") print(f"Phone: {my_order['phone_number']}") break print("Waiting for SMS...") time.sleep(5) else: print("Timeout — balance will be refunded automatically")

Questions développeurs, réponses

Quelles opérations l'API développeur de SmsNoKYC expose-t-elle ?

Tout ce que fait le tableau de bord, un script peut le faire : récupérer le catalogue de 116 pays et 133 services, consulter plus de 15 400 points de prix actifs répartis sur 400 routes opérateurs, attribuer un numéro pour un OTP unique, lire le code entrant dès son arrivée, conserver une location dédiée pendant 7, 14, 30 ou 90 jours, et auditer chaque commande. Tout cela en JSON brut sur HTTPS, facturé en crypto, sans aucune étape d'identité dans le flux.

Faut-il générer une clé API avant ma première requête ?

Rien à générer, rien à faire tourner. Votre seed phrase est l'identifiant lui-même : envoyez-la une fois en POST à /auth-api.php, conservez le cookie de session renvoyé par le serveur, et envoyez ce cookie à chaque appel suivant. Pas de tableau de bord de clés, pas de poignée de main OAuth, pas de calendrier d'expiration — une seed ouvre une session, et c'est tout le modèle.

Combien coûte l'accès à l'API elle-même ?

L'accès ne coûte rien — pas d'abonnement mensuel, pas de palier, pas de volume d'appel minimum. Vous payez uniquement à l'unité : les codes de vérification ponctuels démarrent à $0.01 et se situent généralement entre $0.20 et $1, tandis que les locations dédiées débutent à $4.20 pour une durée de 7 jours. Les soldes se rechargent avec 8 cryptomonnaies (recharge minimum $25), et une activation qui ne reçoit jamais son SMS se rembourse automatiquement sans aucune action de votre part.

Puis-je intégrer depuis n'importe quel langage — ou depuis un agent IA ?

Tout ce qui parle HTTPS convient : Python, Node.js, Go, Rust, PHP, Ruby, Java, C#, ou simplement cURL dans un script shell. La documentation de référence fournit des extraits exécutables en cURL, Python et JavaScript, et /openapi.json expose un document OpenAPI 3.0 complet pour générer des clients typés. Les agents autonomes sont également couverts nativement — un serveur MCP dédié permet aux modèles utilisant des outils d'acheter des numéros et de récupérer des codes de manière autonome ; la page /agents détaille la configuration.

Que se passe-t-il quand un numéro acheté reste silencieux ?

Vous ne perdez rien. Chaque activation dispose d'une fenêtre de réception de 20 minutes ; si elle se referme sans message, la plateforme annule elle-même la commande et reverse l'intégralité du montant sur votre solde. Aucun ticket, aucun formulaire, aucune attente auprès du support. Rachetez immédiatement — passer à un niveau opérateur physique ou premium augmente généralement le taux de livraison.

À quelle fréquence puis-je interroger avant d'être limité ?

Seule la connexion impose un plafond strict : 5 tentatives par 15 minutes et par IP, pour empêcher la devinette de seed. Les points d'accès catalogue, achat, commande et location n'ont pour l'instant aucun quota fixe. Gardez une cadence raisonnable — interroger le point d'accès des commandes toutes les 3 à 5 secondes capte chaque code — et maintenez un trafic soutenu sous environ 10 requêtes par seconde, car des rafales plus lourdes peuvent être ralenties au niveau de la périphérie.

Déployez-le

Obtenez une seed sur la page d'accueil, chargez $25 ou plus en crypto, et votre premier code de vérification n'est qu'à cinq requêtes. Vous construisez avec un LLM plutôt qu'un script ? Pointez votre modèle vers le serveur MCP SmsNoKYC ou suivez le guide d'intégration pour agents IA — le catalogue complet de 116 pays et 133 services devient un appel d'outil.

Tout ce que la référence laisse en suspens est couvert dans le centre d'aide, le glossaire SMS décode le jargon, et l'activité en direct montre le réseau en mouvement. Le support fonctionne par tickets dans l'application une fois connecté.