SNSOTP OTP API
Une API REST pour la vérification par SMS. Commandez un numéro pour l'un des 182 services dans l'un des 154 pays, lisez le code à usage unique de la commande et récupérez le prix complet si aucun code n'arrive dans les 20 minutes.
Chaque endpoint accepte les paramètres sous forme de paramètres de requête (GET) ou de champs de formulaire ou JSON (POST). Les réponses sont en JSON ; l'argent est une chaîne USD avec deux décimales et les heures sont au format ISO 8601 en UTC.
https://snsotp.com/api/v1
Votre clé API depuis la console, envoyée sous forme de Authorization: Bearer sok_...
Authentification
Créez une clé sur la page API de la console. Elle commence par sok_ et n'est affichée qu'une seule fois, donc stockez-la dans une variable d'environnement. Remplacer la clé arrête immédiatement l'ancienne. Les appels à /services, /countries et /prices fonctionnent sans clé.
Authorization: Bearer sok_your_key_here
La clé peut également être envoyée sous forme de paramètre de requête key ou de champ de formulaire, ce qui aide les outils qui ne peuvent pas définir d'en-têtes.
Démarrage rapide
Commandez un numéro, donnez-le à l'application, puis interrogez la commande jusqu'à ce que le code soit là. Le même flux en quatre langues :
# 1. Order a number for whatsapp in US
curl -X POST https://snsotp.com/api/v1/orders \
-H "Authorization: Bearer $SNSOTP_KEY" \
-d service=whatsapp -d country=us
# 2. Read the code (poll every 3 to 5 seconds)
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \
-H "Authorization: Bearer $SNSOTP_KEY"GET/services
Chaque service avec son code et son prix le plus bas · pas de clé
Chaque service que vous pouvez commander, avec son code (utilisez-le comme service dans d'autres appels), sa catégorie et le prix le plus bas parmi les pays. Aucune clé nécessaire.
curl https://snsotp.com/api/v1/services
{
"services": [
{ "code": "whatsapp", "name": "WhatsApp", "category": "social", "from": "0.09" },
{ "code": "telegram", "name": "Telegram", "category": "social", "from": "0.03" }
]
}GET/countries
Chaque pays avec son code et son indicatif · pas de clé
Chaque pays avec son code (ISO 3166 alpha-2 en minuscules, utilisez-le comme country) et son indicatif téléphonique. Aucune clé nécessaire.
curl https://snsotp.com/api/v1/countries
{
"countries": [
{ "code": "us", "name": "United States", "dial_code": "1" },
{ "code": "gb", "name": "United Kingdom", "dial_code": "44" }
]
}GET/prices
Prix pour un service, un pays ou les deux · pas de clé
Le prix par commande pour un service dans chaque pays, un pays pour chaque service, ou une paire. Envoyez au moins un filtre. Aucune clé nécessaire.
Paramètres
servicestring
Code du service, par exemple whatsapp
countrystring
Code du pays, par exemple us
curl "https://snsotp.com/api/v1/prices?service=whatsapp&country=us"
{
"prices": [
{ "service": "whatsapp", "country": "us", "price": "0.93" }
]
}GET/balance
Votre crédit en USD · clé requise
Votre crédit en USD.
curl https://snsotp.com/api/v1/balance \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"balance": "42.50",
"currency": "USD"
}POST/orders
Commandez un numéro pour un service et un pays · clé requise
Commande un numéro et facture son prix. La réponse contient le numéro complet (phone) et sans l'indicatif téléphonique (number). La commande reste ouverte pendant 20 minutes ; si aucun code n'arrive dans ce délai, le prix est automatiquement remboursé sur votre crédit. Réponse statut 201.
Paramètres
servicestringrequis
Code du service depuis GET /services
countrystringrequis
Code du pays depuis GET /countries
curl -X POST https://snsotp.com/api/v1/orders \ -H "Authorization: Bearer $SNSOTP_KEY" \ -d service=whatsapp -d country=us
{
"order": {
"id": "OT-7K2M9QX4PB",
"service": "whatsapp",
"country": "us",
"phone": "+13475550182",
"number": "3475550182",
"dial_code": "1",
"price": "0.93",
"status": "waiting",
"code": null,
"sms": null,
"codes": [],
"expires_at": "2026-11-03T12:20:00.000Z"
},
"window_minutes": 20
}GET/orders/{id}
Statut, code et texte SMS d'une commande · clé requise
Une commande avec son statut, le dernier code, le dernier texte SMS et tous les codes reçus jusqu'à présent. Interrogez toutes les 3 à 5 secondes tant que le statut est waiting.
Paramètres
idpathrequis
ID de commande depuis POST /orders
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": {
"id": "OT-7K2M9QX4PB",
"service": "whatsapp",
"country": "us",
"phone": "+13475550182",
"number": "3475550182",
"price": "0.93",
"status": "received",
"code": "284913",
"sms": "Your WhatsApp code is 284913",
"expires_at": "2026-11-03T12:20:00.000Z"
}
}GET/orders
Vos commandes ouvertes (ou toutes avec status=all) · clé requise
Vos commandes ouvertes, les plus récentes en premier. Ajoutez status=all pour les commandes récentes dans tous les statuts.
Paramètres
statusstring
open (par défaut) ou all
limitnumber
1 à 100, par défaut 50
curl "https://snsotp.com/api/v1/orders?status=open" \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"orders": [
{ "id": "OT-7K2M9QX4PB", "service": "whatsapp", "status": "received", "code": "284913" }
]
}POST/orders/{id}/resend
Un autre code sur le même numéro · clé requise
Demande un autre code sur le même numéro après le premier code, dans la fenêtre, sans frais supplémentaires. Déclenchez ensuite un nouveau SMS dans l'application ; waiting_for_resend est vrai jusqu'à ce qu'il arrive.
Paramètres
idpathrequis
ID de commande
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/resend \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": { "id": "OT-7K2M9QX4PB", "status": "received", "waiting_for_resend": true }
}POST/orders/{id}/finish
Fermez une commande après avoir utilisé le code · clé requise
Ferme une commande qui a reçu un code une fois que vous l'avez utilisé. La finalisation est facultative : les commandes ouvertes se ferment d'elles-mêmes lorsque la fenêtre se termine.
Paramètres
idpathrequis
ID de commande
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/finish \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": { "id": "OT-7K2M9QX4PB", "status": "finished" }
}POST/orders/{id}/cancel
Annulez avant un code, remboursement intégral · clé requise
Annule une commande avant l'arrivée d'un code et rembourse immédiatement le prix complet sur votre crédit. Après un code, l'annulation répond has_code.
Paramètres
idpathrequis
ID de commande
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/cancel \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": { "id": "OT-7K2M9QX4PB", "status": "canceled", "refunded": "0.93" }
}Statut de la commande
waitingLe numéro est prêt et aucun SMS n'est encore arrivé. L'annulation est possible.receivedAu moins un code est arrivé. code et sms contiennent le dernier.finishedFermé après un code, par finish ou lorsque la fenêtre se termine.refundedAucun code n'est arrivé dans les 20 minutes. Le prix complet est remboursé sur votre crédit.canceledAnnulé avant l'arrivée d'un code. Le prix complet est remboursé sur votre crédit.
Erreurs
Les erreurs utilisent le statut HTTP et un corps avec un code stable et un message lisible.
- 400
missing_filter, bad_jsonUne valeur requise est manquante ou le corps ne peut pas être lu. - 401
no_key, bad_keyLa clé est manquante, incorrecte ou supprimée. - 402
no_balanceCrédit insuffisant pour cette commande. Ajoutez du crédit dans la console. - 404
unknown_service, unknown_country, not_sold, not_foundLe code ou la commande n'existe pas, ou la paire n'est pas vendue. - 409
too_many_open, has_code, not_ready, no_numbersL'action ne correspond pas à l'état de la commande, ou aucun numéro n'est disponible actuellement (rien n'est facturé). - 429
rate_limitedPlus de 300 requêtes en une minute avec une seule clé.
{
"error": {
"code": "no_balance",
"message": "Not enough credit. Add credit in the console."
}
}Limites de taux
- 300 requêtes par minute par clé. Au-delà, l'API répond 429 rate_limited pour le reste de la minute.
- Jusqu'à 20 commandes ouvertes par compte. Finalisez ou annulez-en une pour en ouvrir une autre.
- Interrogez une commande toutes les 3 à 5 secondes ; les codes arrivent généralement en moins d'une minute.
Format d'activation SMS
Les scripts écrits pour le format commun handler_api.php fonctionnent avec la même clé API : changez l'adresse de base en https://snsotp.com/stubs/handler_api.php et conservez les actions. Les codes de service et de pays sont les mêmes que dans l'API REST.
getBalanceACCESS_BALANCE:42.50
getServicesListListe JSON des services
getCountriesCarte JSON des pays
getPricesservice, country (facultatif)JSON {country: {service: {cost, count}}}
getNumberservice, countryACCESS_NUMBER:<id>:<phone>
getStatusidSTATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<code>, STATUS_CANCEL
setStatusid, status 1 / 3 / 6 / 8ACCESS_READY, ACCESS_RETRY_GET, ACCESS_ACTIVATION, ACCESS_CANCEL
curl "https://snsotp.com/stubs/handler_api.php\ ?api_key=$SNSOTP_KEY&action=getNumber\ &service=telegram&country=gb" ACCESS_NUMBER:OT-3QF8ZK2W7M:447700900182
Valeurs de setStatus : 1 prêt, 3 un autre code, 6 terminer, 8 annuler avec un remboursement intégral.