Skip to content

Référence API ​

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.

  • URL de base : https://api.wallawhats.com
  • Type de contenu : application/json
  • Authentification : clé API (en-tête)
  • Versionnage : l'API est stable. Les changements cassants sont annoncés 30 jours à l'avance par e-mail à chaque compte.

Authentification ​

Chaque requête doit inclure une clé API dans l'en-tête x-api-key :

bash
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.

Portée et expiration ​

  • Une clé authentifie l'utilisateur qui l'a créée. Elle a les mêmes permissions que cet utilisateur et est décomptée des mêmes quotas de plan.
  • Les clés sont valides 365 jours. Pour faire une rotation : créez une nouvelle clé, basculez dessus, puis supprimez l'ancienne.
  • Les clés manquantes, malformées ou révoquées renvoient 401 Unauthorized.

Limites de clés par plan ​

PlanClés autorisées
Free1
Pro1
Pro+2
Business5
Enterprise20

Toute tentative d'en créer plus que ce que permet votre plan renvoie 400 avec "error": "api key limit reached".

Erreurs ​

Les erreurs sont renvoyées au format JSON avec un champ error et un code de statut HTTP :

json
{ "error": "phoneNumber is required" }
StatutSignification
400Paramètres invalides, quota dépassé ou violation d'une règle métier
401Clé API manquante ou invalide
402Crédits insuffisants pour réaliser l'opération
404Ressource introuvable
500Erreur serveur — réessayez avec un backoff exponentiel

Limites de débit ​

  • Par défaut : 20 requêtes/seconde par clé API, avec un burst à 40.
  • Les endpoints de listing renvoient jusqu'à 50 éléments par page ; utilisez le curseur lastKey pour paginer.
  • Les règles WAF peuvent renvoyer 403 sur des motifs abusifs. Contactez le support si vous êtes limité de façon inattendue.

Utilisateur ​

Obtenir votre profil ​

GET /user/profile

Renvoie le profil de l'utilisateur authentifié.

Réponse

json
{
  "userId": "5a4cbd70-...",
  "email": "jane@example.com",
  "name": "Jane",
  "plan": "pro_plus",
  "createdAt": 1745000000000
}

Exemple

bash
curl https://api.wallawhats.com/user/profile \
  -H "x-api-key: bws_prod_..."

Téléphones ​

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.

Enregistrer un téléphone ​

POST /phones

Gé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

ChampTypeRequisNotes
phoneNumberstringouiFormat E.164, par ex. +34612345678
displayNamestringnonLibellé convivial affiché dans le tableau de bord

Réponse

json
{ "phoneNumber": "+34612345678", "status": "pending_verification" }

Erreurs

  • 400 "invalid phone number format" — pas au format E.164
  • 400 "phone number limit reached" — dépasse la limite du plan (Free/Pro 1, Pro+ 2, Business 3, Enterprise 10)

Exemple

bash
curl -X POST https://api.wallawhats.com/phones \
  -H "x-api-key: bws_prod_..." \
  -H "Content-Type: application/json" \
  -d '{"phoneNumber": "+34612345678", "displayName": "Work"}'

Vérifier un téléphone ​

POST /phones/verify

Confirme un téléphone en soumettant le code à 6 chiffres. Les codes expirent après 15 minutes.

Requête

ChampTypeRequis
phoneNumberstring (E.164)oui
codestring (6 chiffres)oui

Réponse

json
{ "phoneNumber": "+34612345678", "status": "verified" }

Erreurs

  • 404 "phone not found"
  • 400 "invalid code" — code incorrect
  • 400 "code expired" — plus de 15 minutes
  • 400 "phone already verified"

Lister vos téléphones ​

GET /phones

Réponse

json
{
  "phones": [
    {
      "phoneNumber": "+34612345678",
      "status": "verified",
      "displayName": "Work",
      "createdAt": 1745000000000,
      "verifiedAt": 1745000060000
    }
  ],
  "count": 1
}

Supprimer un téléphone ​

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

json
{ "success": true }

Exemple

bash
curl -X DELETE "https://api.wallawhats.com/phones/%2B34612345678" \
  -H "x-api-key: bws_prod_..."

Abonnements ​

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.

Créer un abonnement ​

POST /subscriptions

Requête

ChampTypeRequisNotes
xUsernamestringoui1–15 caractères, alphanumériques + underscore. Le préfixe @ est accepté et retiré.
phoneNumberstring (E.164)ouiDoit être l'un de vos téléphones vérifiés.

Réponse

json
{
  "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ère
  • 400 "phone not found" / "phone not verified"
  • 400 "subscription limit reached" — voir le tableau des plans ci-dessous
  • 404 "X account not found" — le nom d'utilisateur ne se résout pas sur X

Limites par plan

PlanAbonnements
Free1
Pro1
Pro+2
Business5
Enterprise50

Lister vos abonnements ​

GET /subscriptions

Réponse

json
{
  "subscriptions": [ /* même forme que la réponse POST /subscriptions */ ],
  "count": 3
}

Supprimer un abonnement ​

DELETE /subscriptions/{xUsername}

Correspondance insensible à la casse sur xUsername. Retirez le @ avant l'envoi.

Réponse

json
{ "success": true }

Notifications ​

Chaque alerte livrée par WallaWhats est enregistrée ici, avec son statut de livraison WhatsApp.

Lister les notifications ​

GET /notifications

Paramètres de requête

ParamètreTypeDescription
fromnumber (epoch ms)Filtre sur les notifications créées à partir de cette date
tonumber (epoch ms)Filtre sur les notifications créées jusqu'à cette date
lastKeystringCurseur de pagination renvoyé par la réponse précédente

Réponse

json
{
  "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.


Clés API ​

Gérez les clés que vos applications utilisent pour appeler cette API.

Créer une clé API ​

POST /apikeys

Requête

ChampTypeRequis
namestringnon, vaut "Default" par défaut

Réponse (201 Created)

json
{
  "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.

Lister vos clés API ​

GET /apikeys

Réponse

json
[
  {
    "keyPrefix": "bws_prod_00",
    "keyName": "CI server",
    "createdAt": 1745000000000,
    "lastUsedAt": 1745086400000,
    "expiresAt": 1776536000000
  }
]

Supprimer une clé API ​

DELETE /apikeys/{keyPrefix}

Utilisez le keyPrefix à 12 caractères issu de la réponse de listing — jamais la clé complète.

Réponse

json
{ "success": true }

Démarrage rapide ​

bash
# 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.

Support ​

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.

WallaWhats Documentation