Français
Français
Appearance
Français
Français
Appearance
L'API REST WallaWhats vous permet de gérer vos téléphones, abonnements à des comptes X et historique de notifications de manière programmatique — exactement ce que vous feriez autrement depuis le tableau de bord.
https://api.wallawhats.comapplication/jsonChaque requête doit inclure une clé API dans l'en-tête x-api-key :
curl https://api.wallawhats.com/user/profile \
-H "x-api-key: bws_prod_00000000000000000000000000000000"Les clés se créent dans le tableau de bord via Settings → API Keys ou via POST /apikeys. Un préfixe de clé commence par bws_ et fait 36 caractères. Les clés ne sont affichées qu'une seule fois, à la création — si vous perdez une clé, supprimez-la et créez-en une nouvelle.
401 Unauthorized.| Plan | Clés autorisées |
|---|---|
| Free | 1 |
| Pro | 1 |
| Pro+ | 2 |
| Business | 5 |
| Enterprise | 20 |
Toute tentative d'en créer plus que ce que permet votre plan renvoie 400 avec "error": "api key limit reached".
Les erreurs sont renvoyées au format JSON avec un champ error et un code de statut HTTP :
{ "error": "phoneNumber is required" }| Statut | Signification |
|---|---|
400 | Paramètres invalides, quota dépassé ou violation d'une règle métier |
401 | Clé API manquante ou invalide |
402 | Crédits insuffisants pour réaliser l'opération |
404 | Ressource introuvable |
500 | Erreur serveur — réessayez avec un backoff exponentiel |
lastKey pour paginer.403 sur des motifs abusifs. Contactez le support si vous êtes limité de façon inattendue.GET /user/profileRenvoie le profil de l'utilisateur authentifié.
Réponse
{
"userId": "5a4cbd70-...",
"email": "jane@example.com",
"name": "Jane",
"plan": "pro_plus",
"createdAt": 1745000000000
}Exemple
curl https://api.wallawhats.com/user/profile \
-H "x-api-key: bws_prod_..."Un téléphone est un numéro WhatsApp vérifié qui peut recevoir des alertes. Vous devez vérifier un téléphone avant d'y abonner un compte X.
POST /phonesGénère un code à 6 chiffres et l'envoie au numéro via WhatsApp. Le téléphone est créé en état pending_verification.
Requête
| Champ | Type | Requis | Notes |
|---|---|---|---|
phoneNumber | string | oui | Format E.164, par ex. +34612345678 |
displayName | string | non | Libellé convivial affiché dans le tableau de bord |
Réponse
{ "phoneNumber": "+34612345678", "status": "pending_verification" }Erreurs
400 "invalid phone number format" — pas au format E.164400 "phone number limit reached" — dépasse la limite du plan (Free/Pro/Pro+ 1, Business 3, Enterprise 10)Exemple
curl -X POST https://api.wallawhats.com/phones \
-H "x-api-key: bws_prod_..." \
-H "Content-Type: application/json" \
-d '{"phoneNumber": "+34612345678", "displayName": "Work"}'POST /phones/verifyConfirme un téléphone en soumettant le code à 6 chiffres. Les codes expirent après 15 minutes.
Requête
| Champ | Type | Requis |
|---|---|---|
phoneNumber | string (E.164) | oui |
code | string (6 chiffres) | oui |
Réponse
{ "phoneNumber": "+34612345678", "status": "verified" }Erreurs
404 "phone not found"400 "invalid code" — code incorrect400 "code expired" — plus de 15 minutes400 "phone already verified"GET /phonesRéponse
{
"phones": [
{
"phoneNumber": "+34612345678",
"status": "verified",
"displayName": "Work",
"createdAt": 1745000000000,
"verifiedAt": 1745000060000
}
],
"count": 1
}DELETE /phones/{phoneNumber}Supprime le téléphone et désactive tous les abonnements qui le ciblaient. Encodez le + en %2B dans l'URL.
Réponse
{ "success": true }Exemple
curl -X DELETE "https://api.wallawhats.com/phones/%2B34612345678" \
-H "x-api-key: bws_prod_..."Un abonnement relie un compte X que vous souhaitez surveiller à l'un de vos téléphones vérifiés. Lorsque le compte X publie, WallaWhats envoie une alerte WhatsApp à ce téléphone.
POST /subscriptionsRequête
| Champ | Type | Requis | Notes |
|---|---|---|---|
xUsername | string | oui | 1–15 caractères, alphanumériques + underscore. Le préfixe @ est accepté et retiré. |
phoneNumber | string (E.164) | oui | Doit être l'un de vos téléphones vérifiés. |
Réponse
{
"xUsername": "elonmusk",
"xUserId": "44196397",
"xDisplayName": "Elon Musk",
"xProfileImage": "https://pbs.twimg.com/...",
"phoneNumber": "+34612345678",
"isActive": true,
"createdAt": 1745000000000
}Erreurs
400 "invalid X username format" — échec de l'expression régulière400 "phone not found" / "phone not verified"400 "subscription limit reached" — voir le tableau des plans ci-dessous404 "X account not found" — le nom d'utilisateur ne se résout pas sur XLimites par plan
| Plan | Abonnements |
|---|---|
| Free | 1 |
| Pro | 1 |
| Pro+ | 2 |
| Business | 5 |
| Enterprise | 50 |
GET /subscriptionsRéponse
{
"subscriptions": [ /* même forme que la réponse POST /subscriptions */ ],
"count": 3
}DELETE /subscriptions/{xUsername}Correspondance insensible à la casse sur xUsername. Retirez le @ avant l'envoi.
Réponse
{ "success": true }Chaque alerte livrée par WallaWhats est enregistrée ici, avec son statut de livraison WhatsApp.
GET /notificationsParamètres de requête
| Paramètre | Type | Description |
|---|---|---|
from | number (epoch ms) | Filtre sur les notifications créées à partir de cette date |
to | number (epoch ms) | Filtre sur les notifications créées jusqu'à cette date |
lastKey | string | Curseur de pagination renvoyé par la réponse précédente |
Réponse
{
"notifications": [
{
"notificationId": "a1b2c3d4-...",
"userId": "5a4cbd70-...",
"phoneNumber": "+34612345678",
"xUsername": "elonmusk",
"tweetId": "1797123456789000000",
"tweetText": "...",
"tweetUrl": "https://x.com/elonmusk/status/...",
"waMessageId": "wamid.HBgN...",
"status": "delivered",
"errorMessage": null,
"createdAt": 1745000000000,
"updatedAt": 1745000002000
}
],
"lastKey": "eyJOT1RJRklDQVRJT05fSUQi..."
}Valeurs possibles pour status : queued, sent, delivered, read, failed.
La taille de page est de 50. Lorsque lastKey est absent, vous avez atteint la fin.
Gérez les clés que vos applications utilisent pour appeler cette API.
POST /apikeysRequête
| Champ | Type | Requis |
|---|---|---|
name | string | non, vaut "Default" par défaut |
Réponse (201 Created)
{
"apiKey": "bws_prod_00000000000000000000000000000000",
"keyPrefix": "bws_prod_00",
"keyName": "CI server",
"createdAt": 1745000000000,
"expiresAt": 1776536000000
}Valeur affichée une seule fois
apiKey n'est renvoyée qu'à la création. Stockez-la immédiatement dans votre gestionnaire de secrets. Les appels suivants n'exposent que le keyPrefix.
GET /apikeysRéponse
[
{
"keyPrefix": "bws_prod_00",
"keyName": "CI server",
"createdAt": 1745000000000,
"lastUsedAt": 1745086400000,
"expiresAt": 1776536000000
}
]DELETE /apikeys/{keyPrefix}Utilisez le keyPrefix à 12 caractères issu de la réponse de listing — jamais la clé complète.
Réponse
{ "success": true }# 1. Créez une clé dans le tableau de bord et exportez-la
export WALLA_API_KEY="bws_prod_..."
# 2. Enregistrez + vérifiez votre numéro WhatsApp
curl -X POST https://api.wallawhats.com/phones \
-H "x-api-key: $WALLA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phoneNumber":"+34612345678","displayName":"Mobile"}'
# -> le téléphone reçoit un code WhatsApp. Soumettez-le :
curl -X POST https://api.wallawhats.com/phones/verify \
-H "x-api-key: $WALLA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phoneNumber":"+34612345678","code":"123456"}'
# 3. Abonnez-vous à un compte X
curl -X POST https://api.wallawhats.com/subscriptions \
-H "x-api-key: $WALLA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"xUsername":"elonmusk","phoneNumber":"+34612345678"}'
# 4. Regardez arriver les alertes
curl https://api.wallawhats.com/notifications \
-H "x-api-key: $WALLA_API_KEY"C'est tout — dès que le compte X publie, l'alerte arrive sur le téléphone en environ 10 secondes.
Questions sur l'API, rapports de bugs ou demandes d'augmentation de quota : ouvrez un ticket depuis l'onglet Support de votre tableau de bord, ou écrivez à hello@support.wallawhats.com.