Automatiser la vérification par SMS : le guide complet de l'API
De la création d'une clé API à la lecture du code : le flux complet, avec des exemples curl réels, les limites de débit et les pièges les plus courants.
Le site web convient très bien pour une inscription occasionnelle : quelques clics, une courte attente pour un SMS. Il ne suffit plus quand vous écrivez des tests automatisés, un script d'inscription en masse, un pipeline CI, ou un bot qui doit récupérer un code de vérification sans supervision. Le site web ne peut pas faire ça. L'API, si. Voici tout ce qu'il faut savoir pour partir de zéro et obtenir un flux qui fonctionne.
Étape 1 : obtenez une clé API
Connectez-vous et allez sur /account/api-keys pour en créer une. Les clés se présentent sous la forme jm_ suivi d'une chaîne aléatoire. Le texte en clair n'est affiché qu'une seule fois — nous stockons un hash, pas la clé elle-même, donc il n'existe aucune option pour « récupérer ma clé » si vous la perdez. Il ne reste qu'à la supprimer et à en créer une nouvelle.
Chaque requête utilise l'authentification Bearer standard :
Authorization: Bearer jm_your_keyTraitez cette clé comme un mot de passe — ne la commitez pas dans un dépôt public, ne la collez pas dans une conversation pour que quelqu'un d'autre vous aide à déboguer. Si vous pensez qu'elle a fuité, retournez sur /account/api-keys, supprimez-la et générez-en une nouvelle ; l'ancienne cesse de fonctionner immédiatement.
Étape 2 : choisissez un service et un pays
Passer une commande nécessite deux éléments : service (un code de service) et country (un identifiant de pays). Commencez par lister le catalogue :
curl https://jiema.my/api/v1/services \
-H "Authorization: Bearer jm_your_key"Chaque élément a un champ code (celui de Telegram est tg) — transmettez-le directement à l'endpoint de commande, c'est plus fiable que de reconstruire un slug vous-même. Pour voir le prix et le stock en temps réel d'un service donné dans tous les pays, ajoutez le paramètre service :
curl "https://jiema.my/api/v1/prices?service=tg" \
-H "Authorization: Bearer jm_your_key"Chaque entrée de items contient countryId / priceCents / count (le nombre de numéros disponibles actuellement). Vérifiez count avant de commander — s'il est à zéro, la commande échouera à coup sûr, alors ne gaspillez pas un appel pour le découvrir à vos dépens.
Étape 3 : passez la commande
curl -X POST https://jiema.my/api/v1/orders \
-H "Authorization: Bearer jm_your_key" \
-H "Content-Type: application/json" \
-d '{"service":"tg","country":"6"}'Une commande réussie renvoie un numéro de téléphone et une date d'expiration :
{
"ok": true,
"data": {
"id": "cm...",
"status": "WAITING",
"phone": "62812xxxxxxx",
"expiresAt": "2026-08-01T12:15:00.000Z",
"chargedCents": "40"
}
}Le débit a lieu à cette étape — chargedCents est le montant réellement prélevé (en centimes). Confiez ce numéro à l'application cible pour recevoir le code de vérification, puis passez à l'étape suivante.
Étape 4 : interrogez l'API jusqu'à obtenir le code
Il n'y a ni WebSocket ni webhook — vous récupérez le contenu du SMS en interrogeant GET /api/v1/orders/:id jusqu'à ce que smsBody ne soit plus null :
while true; do
RESP=$(curl -s https://jiema.my/api/v1/orders/$ORDER_ID \
-H "Authorization: Bearer jm_your_key")
BODY=$(echo "$RESP" | jq -r '.data.smsBody')
if [ "$BODY" != "null" ]; then
echo "Code received: $BODY"
break
fi
sleep 5
doneCinq secondes constituent un bon point de départ — le numéro reste valable 15 minutes, et la limite de 60 requêtes par minute pour les lectures laisse une large marge. Trois secondes fonctionnent aussi si vous êtes impatient ; interroger l'API toutes les secondes ne fait pas arriver le code plus vite, cela ne fait que consommer votre quota plus rapidement.
Pièges
- Les limites de débit sont par utilisateur, pas par clé. Les endpoints d'écriture (order / cancel / next-sms) sont limités à 10 par minute par utilisateur ; les lectures, à 60 par minute. Créer des clés supplémentaires ne relève pas votre plafond — elles partagent toutes le même.
- Les numéros expirent après 15 minutes. Un numéro inutilisé qui expire sans avoir reçu de code est remboursé automatiquement — inutile de le demander. Mais si votre propre pipeline met trop de temps à réellement utiliser le numéro (coincé dans une file d'attente, par exemple), il sera déjà mort à votre tour.
- Un numéro peut recevoir plusieurs codes. Si l'application cible envoie le SMS en deux temps (une confirmation d'inscription, puis un code de connexion distinct), appelez
POST /api/v1/orders/:id/next-smsdès l'arrivée du premier pour nous dire « j'ai terminé avec celui-ci, continuez à écouter » — sans avoir besoin de passer une nouvelle commande pour obtenir un autre numéro. - Une fois qu'un code est arrivé, l'annulation ne fonctionne plus.
POST /api/v1/orders/:id/cancelrembourse instantanément tant que le numéro est encore en attente d'un code. Une fois quesmsBodya été non nul, le même appel renvoie plutôt une erreurCODE_RECEIVED— vous avez déjà obtenu ce que vous avez payé, impossible de faire machine arrière. - Ne vérifiez pas le status une seule fois avant d'abandonner. Le
statuspasse deWAITINGàRECEIVED. S'il reste bloqué surWAITINGjusqu'à l'expiration, c'est généralement un problème de taux de livraison propre à cette combinaison pays/service — passer une nouvelle commande dans un autre pays résout généralement le problème plus vite que d'attendre.
Pour aller plus loin
Cela couvre le flux principal, de la commande au code. La liste complète des champs, les codes d'erreur et les cas particuliers de chaque endpoint se trouvent sur /api-docs. Si vous faites tourner cela à grande échelle — en maintenant par exemple les flux de vérification de dizaines de comptes en parallèle — chronométrez le polling de chaque commande indépendamment. Ne les mettez pas en file dans une seule boucle séquentielle, sinon les numéros les plus anciens expireront pendant que vous attendez encore le premier.
Gagnez 10 % sur chaque commande de vos invités
Sans plafond ni expiration. Partagez votre lien et touchez une commission à vie sur chaque compte créé via ce lien.
Articles liés
Le renouvellement de numéro est arrivé : gardez un numéro qui a déjà fait ses preuves
jiema.my vous permet désormais de renouveler un numéro qui a déjà reçu un code, en le prolongeant de plusieurs heures au lieu d'en acheter un nouveau — et le bouton de renouvellement n'apparaît que lorsque le renouvellement est réellement disponible.
Une comparaison open-source des services de vérification SMS
Une liste open-source maintenue par la communauté sur GitHub compare les principaux services pour recevoir des SMS selon le prix, les pays, le paiement et l'API — et montre où se situe le numéro virtuel de jiema.my.
Qu'est-ce que la vérification SMS ? Les codes à usage unique (OTP) expliqués
Une explication simple de la vérification SMS et des codes à usage unique (OTP) : comment ils fonctionnent, pourquoi les applis les utilisent et quel rôle jouent les numéros de téléphone temporaires.