Commencez ici
Votre première demande en quatre étapes
Connectez-vous et activez WhatsApp pour un mobile pris en charge.
Confirmez le destinataire avec le point de terminaison de vérification du numéro.
Envoyez avec waonly=yes.
Pour les messages entrants, activez la récupération, synchronisez, puis appelez /getwa.
Application mobile officielle
Le pont sécurisé entre votre téléphone, votre tableau de bord et votre API.
Les opérations SMS et appels passent par l'application officielle SMSMobileAPI installée sur votre téléphone connecté. L'application associe en toute sécurité l'appareil à votre compte, synchronise les événements autorisés et relie le réseau mobile au tableau de bord et à l'API REST.
- Communications signées distribuées via les listes officielles de Google Play et Apple App Store
- Contrôles d'examen, de signature et de distribution des plateformes Google et Apple
- Couplage sécurisé des appareils, transport HTTPS et accès API authentifié
- Uniquement les autorisations requises pour les fonctionnalités mobiles que vous activez
Authentification
Conservez les informations d'identification sur votre serveur
Utilisez apikey pour les intégrations directes. Les informations d'identification du client OAuth2 sont disponibles pour les applications côté serveur ; demandez un jeton et envoyez-le comme autorisation : porteur ACCESS_TOKEN.
Gestion des historiques
Vider l’historique en toute sécurité : vérifier, supprimer et suivre l’avancement
Ces endpoints vident l’historique serveur sélectionné pour votre clé API, pas les messages sur les téléphones ou les services externes. Ils ne constituent pas une procédure d’effacement du compte. Une nouvelle activité peut apparaître après le nettoyage.
Comprendre request_id et la reprise d’une suppression
Par défaut, les lignes liées à un service ou en cours de traitement restent visibles. Utilisez include_linked=1 uniquement si vous acceptez le risque d’interrompre les intégrations ou les traitements en cours.
Comment fonctionne request_id
- Vérifiez le nombre de lignes avec action=preview. Aucun request_id n’est nécessaire et aucune ligne n’est supprimée.
- Générez un request_id unique pour une nouvelle suppression, par exemple un UUID. Conservez-le avant d’envoyer action=delete.
- Pour reprendre après une erreur, un délai dépassé ou une réponse HTTP 202, réutilisez la même clé API, le même endpoint d’historique, le même request_id et la même valeur include_linked. Ne générez jamais automatiquement un nouvel identifiant après une erreur.
- Lorsque completed=true, l’opération est terminée. Réutiliser son identifiant renvoie le même résultat sans supprimer les nouvelles lignes arrivées entre-temps. Utilisez un nouvel identifiant uniquement pour démarrer volontairement un nouveau nettoyage.
request_id identifie votre opération de suppression, et non un SMS individuel. Format autorisé : 16-128 lettres, chiffres, tirets ou soulignements ASCII. Un UUID généré avec crypto.randomUUID() est approprié.
La suppression s’effectue par lots. Une réponse HTTP 202 avec continue_required=true demande de répéter action=delete après 3 secondes. Aucun cron ne prend le relais. action=status consulte uniquement l’avancement, même si la réponse HTTP vaut 200.
Exemples de suppression et de consultation de l’avancement
Remplacez le request_id d’exemple par votre propre identifiant unique avant de commencer. Les requêtes delete ci-dessous modifient réellement l’historique du compte : ce ne sont pas des aperçus.
curl -X POST "https://api.smsmobileapi.com/delete-history-whatsapp-sent/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -X POST "https://api.smsmobileapi.com/delete-history-whatsapp-sent/" \
-H "Authorization: Bearer YOUR_OAUTH_ACCESS_TOKEN" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -G "https://api.smsmobileapi.com/delete-history-whatsapp-sent/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=status" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"GET accepte aussi action=preview ou action=delete. POST est recommandé : les paramètres d’URL peuvent apparaître dans l’historique du navigateur et les journaux serveur. N’insérez jamais une URL de suppression dans un lien public, une image ou un mécanisme de préchargement.
Pour POST, envoyez tous les paramètres du corps du formulaire ou d'un objet JSON, jamais dans la chaîne de requête. Les paramètres inconnus sont rejetés; les filtres mobiles ou la date ne sont pas pris en charge.
Authentification des endpoints d’historique
Utiliser apikey ou un jeton d'accès Authorization: Bearer émis par SMSMobileAPI OAuth2. N'envoyez pas de jeton de rafraîchissement ou de clé API sous forme de jeton Bearer. Les jetons périmés sont refusés.
Lorsque des scopes sont définis, history:read autorise preview et status ; history:delete autorise aussi la suppression. Les restrictions du jeton et du client OAuth s’appliquent toutes les deux. Les anciens jetons sans scope conservent leur accès existant au compte.
OAuth2 sélectionne la clé API primaire unique. Si plusieurs clés primaires existent, fournir également apikey pour sélectionner une appartenant au compte. Les clés secondaires n'accordent jamais l'accès à l'historique de la clé primaire.
Lire la réponse avant de continuer
count_delete est le nombre cumulatif retiré par cette opération. selected_at_start est la sélection initiale; protected_at_start compte les enregistrements exclus. Utilisez preview.linked_or_processing pour compter les enregistrements liés même lorsque include_linked=1.
{
"result": {
"error": 0,
"history": "whatsapp-sent",
"action": "delete",
"request_id": "6d54ac58-41f1-4fbc-9a39-6e6c86089451",
"status": "processing",
"completed": false,
"count_delete": 100,
"total_before": 250,
"selected_at_start": 200,
"protected_at_start": 50,
"include_linked": 0,
"continue_required": true,
"message": "Repeat GET or POST with the same request_id and include_linked to continue. Status requests do not run deletion."
}
}- 200 avec completed=true : terminé. Une réponse HTTP 200 à preview ou status ne suffit pas, à elle seule, à confirmer la fin de la suppression.
- 400 INVALID_REQUEST_ID : vérifiez le format de l’identifiant. 404 REQUEST_NOT_FOUND : aucune opération ne correspond à cet identifiant, cette clé API et cet historique.
- 401 : identifiants invalides ou expirés. 403 : autorisations OAuth insuffisantes ou compte non autorisé.
- 409 HISTORY_BUSY : un autre nettoyage est en cours ; continuez-le depuis le client original. 409 INCLUDE_LINKED_CONFLICT : restaurer la valeur originale de include_linked.
- 409 OAUTH_ACCOUNT_AMBIGUOUS: fournir une clé API appartenant à ce compte.
- 503 ou interruption du réseau : certains lots peuvent déjà être complétés. Vérifiez la configuration, puis reessayez avec le request_id original. Ne créez pas automatiquement une opération de remplacement.
POSTE · GET
Envoyer un message WhatsApp
https://api.smsmobileapi.com/sendsmsEnvoie un texte WhatsApp ou un média pris en charge via l'environnement connecté.
Utilisez-le pour des destinataires individuels ou un groupe de contacts du tableau de bord.
Paramètres
| Nom | Taper | Exigence | Désignation des marchandises |
|---|---|---|---|
apikey |
chaîne | Requis | Votre clé API ; à omettre lors de l'utilisation d'un jeton Bearer. |
recipients |
téléphone | Requis | Code du pays plus numéro, sans + ou 00. |
message |
chaîne | Requis | Corps du texte ; plusieurs lignes sont prises en charge. |
waonly |
Oui | Requis | Vous devez répondre oui pour demander une livraison via WhatsApp uniquement. |
url_media |
URL HTTPS | Facultatif | PDF public, document, archive ou URL JPG/PNG. |
url_media_shorted |
Oui | Facultatif | Utilisez une URL de téléchargement raccourcie avec le mode d'aperçu PDF. |
pdf_with_image |
Oui | Facultatif | Ajoutez un aperçu d'image pour un PDF. |
encrypt_message |
Oui | Facultatif | Exiger un déchiffrement côté destinataire. |
contactGroup |
GUIDE | Facultatif | Envoyer à chaque contact dans un tableau de bord groupe. |
Exemple de demande
curl -X POST "https://api.smsmobileapi.com/sendsms?waonly=yes" \
-d "apikey=YOUR_API_KEY" \
-d "recipients=191728660" \
--data-urlencode "message=Your order is ready."
Exemple de réponse
{
"result": {
"error": 0,
"sent": "1",
"id": "MESSAGE_GUID",
"send_with_whatsapp": "1"
}
}
Vous souhaitez exécuter cette requête ?Connectez votre clé API en haut de la page pour déverrouiller le testeur interactif.
Clé de connexion ↑- Les URL de médias prises en charge doivent être des ressources HTTPS publiques.
- Formatage WhatsApp : *gras*, _italique_, ~barré~ et triple backtick monospace.
POSTE · GET
Renvoyer un message WhatsApp non envoyé
https://api.smsmobileapi.com/resendwa/Réessaye un message WhatsApp qui a actuellement un statut d'erreur.
Utilisez-le après avoir diagnostiqué une entrée de journal WhatsApp ayant échoué.
Paramètres
| Nom | Taper | Exigence | Désignation des marchandises |
|---|---|---|---|
apikey |
chaîne | Requis | Votre clé API. |
guid |
chaîne | Requis | GUID du message ayant échoué. |
Exemple de demande
curl "https://api.smsmobileapi.com/resendwa/?apikey=YOUR_API_KEY&guid=MESSAGE_GUID"
Vous souhaitez exécuter cette requête ?Connectez votre clé API en haut de la page pour déverrouiller le testeur interactif.
Clé de connexion ↑- Seuls les messages ayant échoué peuvent être renvoyés.
OBTENIR
Activer la récupération entrante
https://api.smsmobileapi.com/getwa/active/Active, désactive ou active la récupération des messages WhatsApp.
Appelez-le une fois avant d'utiliser la synchronisation WhatsApp entrante.
Paramètres
| Nom | Taper | Exigence | Désignation des marchandises |
|---|---|---|---|
apikey |
chaîne | Requis | Votre clé API. |
statut |
0 , 1 , x | Facultatif | 1 active, 0 désactive, x ou omission fait basculer l'état actuel. |
Exemple de demande
curl "https://api.smsmobileapi.com/getwa/active/?apikey=YOUR_API_KEY&statut=1"
Exemple de réponse
{
"success": true,
"read_message_active": 1,
"status_note": "Activated"
}
Vous souhaitez exécuter cette requête ?Connectez votre clé API en haut de la page pour déverrouiller le testeur interactif.
Clé de connexion ↑- La récupération entrante est désactivée par défaut pour des raisons de confidentialité.
OBTENIR
Synchroniser les messages entrants
https://api.smsmobileapi.com/getwa/synchronisation/Demande une nouvelle synchronisation WhatsApp avant la récupération.
Appelez-le immédiatement avant /getwa lorsque votre application a besoin de données entrantes actuelles.
Paramètres
| Nom | Taper | Exigence | Désignation des marchandises |
|---|---|---|---|
apikey |
chaîne | Requis | Votre clé API. |
Exemple de demande
curl "https://api.smsmobileapi.com/getwa/synchronisation/?apikey=YOUR_API_KEY"
Exemple de réponse
{
"error": "0",
"messages": "synchronized",
"expire_at": "2026-03-11 12:27:00",
"expire_at_unix": "1773232020"
}
Vous souhaitez exécuter cette requête ?Connectez votre clé API en haut de la page pour déverrouiller le testeur interactif.
Clé de connexion ↑- La synchronisation sert uniquement à recevoir des messages. Ne l'appelez pas avant l'envoi.
OBTENIR
Récupérer les messages WhatsApp
https://api.smsmobileapi.com/getwaRenvoie les messages WhatsApp entrants synchronisés.
Utilisez-le après avoir activé et synchronisé la récupération entrante.
Paramètres
| Nom | Taper | Exigence | Désignation des marchandises |
|---|---|---|---|
apikey |
chaîne | Requis | Votre clé API. |
before |
Horodatage Unix | Facultatif | Renvoyer les enregistrements avant cela horodatage. |
date |
AAAA-MM-JJ | Facultatif | Renvoyer les enregistrements pour une date. |
message_type |
texte | audio | Facultatif | Filtrer les messages texte ou les messages audio convertis en texte ; omettre pour les deux. |
Exemple de demande
curl "https://api.smsmobileapi.com/getwa/?apikey=YOUR_API_KEY&message_type=text"
Exemple de réponse
{
"date": "2026-03-11",
"hour": "12:27:00",
"timestamp": "1773232020",
"number": "19176728660",
"contact": "SMSMobileAPI",
"message": "When will I receive my order?",
"guid": "652fcfc0-12a8-46f5-b5ba-9391135b8b4c"
}
Vous souhaitez exécuter cette requête ?Connectez votre clé API en haut de la page pour déverrouiller le testeur interactif.
Clé de connexion ↑
OBTENIR
Vérifier un numéro WhatsApp
https://api.smsmobileapi.com/whatsapp/checknumber/Vérifie si un numéro de téléphone est disponible sur WhatsApp.
Utilisez-le avant l'envoi pour réduire les échecs évitables.
Paramètres
| Nom | Taper | Exigence | Désignation des marchandises |
|---|---|---|---|
apikey |
chaîne | Requis | Votre clé API. |
recipients |
téléphone | Requis | Code du pays plus numéro, sans + ou 00. |
Exemple de demande
curl "https://api.smsmobileapi.com/whatsapp/checknumber/?apikey=YOUR_API_KEY&recipients=19176728660"
Exemple de réponse
{
"contact_found_on_whatsapp": "yes",
"recipients": "19176728660"
}
Vous souhaitez exécuter cette requête ?Connectez votre clé API en haut de la page pour déverrouiller le testeur interactif.
Clé de connexion ↑
POSTE
Créez un jeton d'accès OAuth2
https://api.smsmobileapi.com/oauth2/tokenÉchange les informations d'identification du client contre un jeton Bearer.
Utilisez-le pour les intégrations de serveur à serveur où les informations d'identification de courte durée sont préférées.
Paramètres
| Nom | Taper | Exigence | Désignation des marchandises |
|---|---|---|---|
grant_type |
chaîne | Requis | Doit être client_credentials. |
client_id |
chaîne | Requis | ID client du tableau de bord. |
client_secret |
chaîne | Requis | Secret client du tableau de bord. |
Exemple de demande
curl -X POST "https://api.smsmobileapi.com/oauth2/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET"
Vous souhaitez exécuter cette requête ?Connectez votre clé API en haut de la page pour déverrouiller le testeur interactif.
Clé de connexion ↑- Gardez le secret client sur votre serveur. Ne l'incluez jamais dans le code du mobile ou du navigateur.
POSTE · GET
Vider l’historique des messages WhatsApp envoyés
https://api.smsmobileapi.com/delete-history-whatsapp-sent/Efface les enregistrements du serveur des messages WhatsApp envoyés. Il ne supprime pas les messages des conversations WhatsApp.
Commencez par preview, vérifiez les compteurs, puis demandez explicitement la suppression. Elle concerne tout l’historique sélectionné pour la clé API, sans filtre de date, de mobile ou de message.
Paramètres
| Nom | Taper | Exigence | Désignation des marchandises |
|---|---|---|---|
apikey |
chaîne | Facultatif | Requis sans OAuth2. Avec OAuth2, sélectionnez en option une clé API appartenant au même compte. |
action |
preview | delete | status | Facultatif | preview compte les lignes sans les supprimer ; delete démarre ou poursuit la suppression ; status consulte l’avancement sans poursuivre. L’API utilise delete par défaut ; ce testeur choisit preview par sécurité. |
include_linked |
0 | 1 | Facultatif | Valeur par défaut : 0, pour conserver les lignes liées ou en cours de traitement. Choisissez 1 pour les inclure, au risque de perturber les intégrations. Conservez la même valeur lors de la reprise d’une suppression. |
request_id |
chaîne | Facultatif | Obligatoire pour delete et status, facultatif pour preview. Utilisez 16 à 128 lettres, chiffres, tirets (-) ou tirets bas (_). Générez un identifiant unique par nouvelle suppression et conservez-le pour chaque reprise. Il ne s’agit ni de l’identifiant d’un message ni d’une clé API. |
Exemple de demande
curl -X POST "https://api.smsmobileapi.com/delete-history-whatsapp-sent/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=preview" -d "include_linked=0"
Exemples de suppression et de consultation de l’avancement
Remplacez le request_id d’exemple par votre propre identifiant unique avant de commencer. Les requêtes delete ci-dessous modifient réellement l’historique du compte : ce ne sont pas des aperçus.
curl -X POST "https://api.smsmobileapi.com/delete-history-whatsapp-sent/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -X POST "https://api.smsmobileapi.com/delete-history-whatsapp-sent/" \
-H "Authorization: Bearer YOUR_OAUTH_ACCESS_TOKEN" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -G "https://api.smsmobileapi.com/delete-history-whatsapp-sent/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=status" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"Exemple de réponse
{
"result": {
"error": 0,
"history": "whatsapp-sent",
"action": "preview",
"total": 120,
"simple": 100,
"linked_or_processing": 20,
"selected": 100,
"include_linked": 0,
"operation_in_progress": false,
"active_include_linked": null
}
}
Vous souhaitez exécuter cette requête ?Connectez votre clé API en haut de la page pour déverrouiller le testeur interactif.
Clé de connexion ↑- L'exemple ci-dessus est un aperçu, pas une suppression. Les nombres sont des exemples; la sélection définitive est fixée lorsque la suppression commence.
- include_linked=1 peut perturber GHL, Zapier, les automatismes, les liens de désabonnement ou le suivi de la livraison. Il ne contourne jamais les contrôles d'intégrité de la propriété ou du stockage des comptes.
POSTE · GET
Vider l’historique des messages WhatsApp reçus
https://api.smsmobileapi.com/delete-history-whatsapp-received/Vide les journaux serveur des messages WhatsApp reçus, sans déconnecter WhatsApp ni supprimer les conversations.
Commencez par preview, vérifiez les compteurs, puis demandez explicitement la suppression. Elle concerne tout l’historique sélectionné pour la clé API, sans filtre de date, de mobile ou de message.
Paramètres
| Nom | Taper | Exigence | Désignation des marchandises |
|---|---|---|---|
apikey |
chaîne | Facultatif | Requis sans OAuth2. Avec OAuth2, sélectionnez en option une clé API appartenant au même compte. |
action |
preview | delete | status | Facultatif | preview compte les lignes sans les supprimer ; delete démarre ou poursuit la suppression ; status consulte l’avancement sans poursuivre. L’API utilise delete par défaut ; ce testeur choisit preview par sécurité. |
include_linked |
0 | 1 | Facultatif | Valeur par défaut : 0, pour conserver les lignes liées ou en cours de traitement. Choisissez 1 pour les inclure, au risque de perturber les intégrations. Conservez la même valeur lors de la reprise d’une suppression. |
request_id |
chaîne | Facultatif | Obligatoire pour delete et status, facultatif pour preview. Utilisez 16 à 128 lettres, chiffres, tirets (-) ou tirets bas (_). Générez un identifiant unique par nouvelle suppression et conservez-le pour chaque reprise. Il ne s’agit ni de l’identifiant d’un message ni d’une clé API. |
Exemple de demande
curl -X POST "https://api.smsmobileapi.com/delete-history-whatsapp-received/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=preview" -d "include_linked=0"
Exemples de suppression et de consultation de l’avancement
Remplacez le request_id d’exemple par votre propre identifiant unique avant de commencer. Les requêtes delete ci-dessous modifient réellement l’historique du compte : ce ne sont pas des aperçus.
curl -X POST "https://api.smsmobileapi.com/delete-history-whatsapp-received/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -X POST "https://api.smsmobileapi.com/delete-history-whatsapp-received/" \
-H "Authorization: Bearer YOUR_OAUTH_ACCESS_TOKEN" \
-d "action=delete" -d "include_linked=0" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"curl -G "https://api.smsmobileapi.com/delete-history-whatsapp-received/" \
--data-urlencode "apikey=YOUR_API_KEY" \
-d "action=status" \
-d "request_id=6d54ac58-41f1-4fbc-9a39-6e6c86089451"Exemple de réponse
{
"result": {
"error": 0,
"history": "whatsapp-received",
"action": "preview",
"total": 120,
"simple": 100,
"linked_or_processing": 20,
"selected": 100,
"include_linked": 0,
"operation_in_progress": false,
"active_include_linked": null
}
}
Vous souhaitez exécuter cette requête ?Connectez votre clé API en haut de la page pour déverrouiller le testeur interactif.
Clé de connexion ↑- L'exemple ci-dessus est un aperçu, pas une suppression. Les nombres sont des exemples; la sélection définitive est fixée lorsque la suppression commence.
- include_linked=1 peut perturber GHL, Zapier, les automatismes, les liens de désabonnement ou le suivi de la livraison. Il ne contourne jamais les contrôles d'intégrité de la propriété ou du stockage des comptes.
Dépannage
Erreurs et tentatives sécurisées
Lisez l'état HTTP et le champ d'erreur JSON avant de réessayer. Ne réessayez pas les échecs de validation ou d'authentification sans d'abord corriger la demande.
| HTTP | Code | Que faire |
|---|---|---|
| 400 | missing_parameter | Un paramètre obligatoire est vide ou absent. Vérifiez la table des paramètres du point de terminaison. |
| 403 | invalid_apikey | La clé API est inconnue, expirée ou non autorisée pour la fonctionnalité demandée. |
| 429 | too_many_requests | Les demandes arrivent trop rapidement. Attendez, puis réessayez avec un intervalle exponentiel. |
| 500 | server_error | Le service n'a pas pu terminer la demande. Conservez la réponse et contactez l'assistance si elle persiste. |
Besoin d'aide ?
Apportez le contexte de la requête, pas vos secrets.
Partagez le point de terminaison, l'horodatage, l'état HTTP et la réponse nettoyée. N'incluez jamais de clés API, de jetons ou de contenu de message privé.


