API développeur

Automatisez les vérifications à grande échelle

L'API SNSPhone permet à vos propres outils de commander des numéros non-VoIP américains, de lire les codes SMS et de gérer les locations. Deux formats : une API REST avec JSON, et le format commun d'activation SMS pour les scripts existants.

Démarrage rapide

URL de base https://snsphone.com/api/v1. Créez une clé sur la page API de la console et envoyez-la en tant que Authorization: Bearer spk_... (ou un champ clé). Tous les numéros sont non-VoIP américains. L'argent est une chaîne USD avec 2 décimales, les heures sont en UTC ISO 8601, 300 requêtes par minute par clé. Prix en date du 2026-11-03.

Python

import os, time, requests

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

order = requests.post(f"{API}/orders", headers=H, data={"service": "google"}).json()["order"]
print("Use this US 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://snsphone.com/api/v1";
const H = { Authorization: `Bearer ${process.env.SNSPHONE_KEY}` };

const { order } = await fetch(`${API}/orders`, {
  method: "POST", headers: H, body: new URLSearchParams({ service: "discord" }),
}).then((r) => r.json());
console.log("Use this US 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);

Catalogue

GET/services

Chaque code de service avec son nom, catégorie, prix de vérification et périodes de location. Aucune clé nécessaire.

Public, aucune clé nécessaire.

curl "https://snsphone.com/api/v1/services"
{"country":"us","services":[{"code":"whatsapp","name":"WhatsApp","category":"Messaging","verification":"0.90","rentals":[]},{"code":"telegram","name":"Telegram","verification":"0.45","rentals":[{"days":365,"period":"1 year","price":"37.44"}]}]}

GET/prices?service=telegram

Prix en USD, optionnellement pour un service. Aucune clé nécessaire.

Public, aucune clé nécessaire.

curl "https://snsphone.com/api/v1/prices?service=telegram"
{"country":"us","prices":[{"service":"telegram","type":"verification","days":null,"price":"0.45"},{"service":"telegram","type":"rental","days":365,"price":"37.44"}]}

GET/balance

Votre crédit en USD.

Nécessite votre clé API.

curl "https://snsphone.com/api/v1/balance" \
  -H "Authorization: Bearer $KEY"
{"balance":"25.00","currency":"USD"}

Vérifications

POST/orders

Achète une vérification (201). Retourne le numéro américain et l'heure à laquelle la fenêtre de 20 minutes se termine.

Nécessite votre clé API.

curl -X POST "https://snsphone.com/api/v1/orders" \
  -H "Authorization: Bearer $KEY" \
  -d "service=whatsapp"
{"order":{"id":"VR-7K2M9QX4PB","service":"whatsapp","country":"us","phone":"+14155550142","number":"4155550142","status":"waiting","code":null,"expires_at":"2026-11-03T12:20:00.000Z"},"window_minutes":20}

GET/orders/VR-7K2M9QX4PB

Une vérification avec son statut et chaque code reçu. Statuts : waiting, received, finished, refunded, canceled.

Nécessite votre clé API.

curl "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB" \
  -H "Authorization: Bearer $KEY"
{"order":{"id":"VR-7K2M9QX4PB","status":"received","code":"482913","sms":"Your WhatsApp code is 482913"}}

GET/orders?status=open

Vos vérifications ouvertes (status=all pour les 100 derniers).

Nécessite votre clé API.

curl "https://snsphone.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer $KEY"
{"orders":[...]}

POST/orders/VR-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. Aucun frais supplémentaire.

Nécessite votre clé API.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/resend" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"received","waiting_for_resend":true}}

POST/orders/VR-7K2M9QX4PB/finish

Ferme une vérification qui a reçu son code.

Nécessite votre clé API.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/finish" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"finished"}}

POST/orders/VR-7K2M9QX4PB/cancel

Annule avant qu'un code n'arrive. Le prix total est remboursé sur votre crédit.

Nécessite votre clé API.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/cancel" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"canceled","refunded":"0.90"}}

Locations

POST/rentals

Loue un numéro américain pour un service et une période (201). days est optionnel lorsque le service a une période.

Nécessite votre clé API.

curl -X POST "https://snsphone.com/api/v1/rentals" \
  -H "Authorization: Bearer $KEY" \
  -d "service=telegram&days=365"
{"rental":{"id":"RN-4J8T2W6QHM","service":"telegram","phone":"+13125550198","days":365,"period":"1 year","price":"37.44","status":"active","ends_at":"2027-11-03T12:00:00.000Z","messages":[]}}

GET/rentals?status=active

Vos locations actives avec leurs derniers messages (status=all pour les 100 derniers).

Nécessite votre clé API.

curl "https://snsphone.com/api/v1/rentals?status=active" \
  -H "Authorization: Bearer $KEY"
{"rentals":[...]}

GET/rentals/RN-4J8T2W6QHM

Une location avec chaque SMS reçu dessus.

Nécessite votre clé API.

curl "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM" \
  -H "Authorization: Bearer $KEY"
{"rental":{"id":"RN-4J8T2W6QHM","status":"active","messages":[{"from":"Telegram","sms":"Telegram code: 57291","code":"57291","received_at":"2026-11-03T12:01:12.000Z"}]}}

POST/rentals/RN-4J8T2W6QHM/renew

Ajoute une période supplémentaire au même prix.

Nécessite votre clé API.

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/renew" \
  -H "Authorization: Bearer $KEY"
{"rental":{"renewed":1,"ends_at":"2028-11-02T12:00:00.000Z"}}

POST/rentals/RN-4J8T2W6QHM/cancel

Annule dans les 20 premières minutes tant qu'aucun SMS n'est arrivé. Tout ce qui a été payé est remboursé sur votre crédit.

Nécessite votre clé API.

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/cancel" \
  -H "Authorization: Bearer $KEY"
{"rental":{"status":"canceled","refunded":"37.44"}}

Format d'activation SMS

Pour les outils qui utilisent déjà le format commun d'activation. Une URL, un champ d'action, des réponses en texte brut. Vérifications uniquement.

https://snsphone.com/stubs/handler_api.php?api_key=KEY&action=ACTION
ActionChamps supplémentairesRéponseSignification
getBalanceaucunACCESS_BALANCE:12.50Votre crédit en USD.
getServicesListaucun{"status":"success","services":[{"code":"whatsapp","name":"WhatsApp"}]}Codes de service avec un prix de vérification (JSON).
getCountriesaucun{"us":{"name":"United States","dial":"1"}}Seulement les États-Unis. country peut être us, 187 ou laissé vide.
getPrices&service=whatsapp{"us":{"whatsapp":{"cost":0.9,"count":100}}}Prix en USD. Le filtre de service est optionnel.
getNumber&service=whatsapp&country=usACCESS_NUMBER:VR-7K2M9QX4PB:14155550142Achète une vérification. Retourne l'id et le numéro avec le 1 devant.
getStatus&id=VR-7K2M9QX4PBSTATUS_OK:482913STATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<last code> (un autre code demandé), STATUS_CANCEL (annulé ou remboursé).
setStatus&id=VR-7K2M9QX4PB&status=3ACCESS_RETRY_GETstatus=1 prêt (ACCESS_READY), 3 autre code (ACCESS_RETRY_GET), 6 terminer (ACCESS_ACTIVATION), 8 annuler avec un remboursement complet tant qu'aucun code n'est arrivé (ACCESS_CANCEL).

Erreurs

Les erreurs REST arrivent sous forme de {"error":{"code","message"}} avec ces codes de statut. Le format d'activation répond avec un mot simple.

400Champ manquant ou incorrect (bad_json, bad_period).
401Pas de clé ou clé incorrecte (no_key, bad_key).
402Crédit insuffisant (no_balance).
404Service, commande, location ou point d'accès inconnu, ou produit que le service ne propose pas (not_sold).
409Impossible pour le moment (has_code, has_sms, too_late, not_ready, too_many_open, too_many_active, no_numbers).
429Plus de 300 requêtes par minute (rate_limited).
BAD_KEYClé API manquante ou incorrecte.
BAD_ACTIONAction inconnue.
BAD_SERVICECode de service inconnu.
BAD_COUNTRYPas aux États-Unis, ou le service est vendu uniquement en location.
NO_BALANCECrédit insuffisant.
NO_NUMBERSAucun numéro disponible pour le moment. Réessayez dans un instant.
NO_ACTIVATIONID inconnu ou ne vous appartenant pas.
EARLY_CANCEL_DENIEDUn code est déjà arrivé, donc il ne peut pas être annulé.
NO_ACTIVATIONS20 vérifications sont déjà en cours.
TOO_MANY_REQUESTSPlus de 300 requêtes par minute.

Questions sur l'API

Clés, limites et interrogation, réponses incluses.

SNSPhone propose-t-il une API de vérification par SMS ?

Oui. Une API REST avec JSON à /api/v1 pour les services, les prix, les vérifications et les locations, et le format commun d'activation SMS à /stubs/handler_api.php.

Comment authentifier les requêtes API ?

Créez une clé sur la page API de la console et envoyez-la sous la forme Authorization: Bearer spk_..., ou comme champ key. Les clés sont stockées uniquement sous forme de hachage et affichées une seule fois.

Quelles sont les limites de débit de l'API ?

300 requêtes par minute par clé, jusqu'à 20 vérifications ouvertes et 20 locations actives par compte.

Les commandes API coûtent-elles plus cher que celles du site web ?

Non. L'API utilise les mêmes prix et les mêmes règles de remboursement que la console.

Comment savoir quand le code est arrivé ?

Interrogez GET /orders/{id} toutes les quelques secondes. Le statut passe de waiting à received et le champ code contient les chiffres.

API de vérification SMS non-VoIP : numéros américains par REST | SNSPhone