Introduction à l’API
L’API REST de Whatixo permet à votre site, votre application ou votre logiciel d’envoyer des messages WhatsApp, de gérer vos contacts et vos groupes depuis vos numéros connectés. Toutes les réponses sont en JSON.
En bref
| URL de base | https://api.whatixo.com/api |
| Authentification | En-tête x-api-key: wtx_… (ou Authorization: Bearer wtx_…) |
| Format | Corps JSON (Content-Type: application/json), encodage UTF-8, 1 Mo maximum |
| Méthode | POST pour toutes les opérations publiques |
| Limite | 200 requêtes / minute pour l’envoi de messages — voir Erreurs et limites |
| HTTPS | Utilisez toujours https:// pour protéger votre clé. |
1. Obtenir votre clé API
Ouvrez les paramètres
Dans Whatixo : icône ⚙ → onglet Intégrations & API.
Copiez la clé
Cliquez sur Copier la clé. Elle commence par wtx_ suivi de 64 caractères hexadécimaux.
La clé donne accès à vos numéros et à vos contacts. Ne l’intégrez jamais dans du JavaScript exécuté par le navigateur, une application mobile ou un dépôt Git public. Stockez-la dans une variable d’environnement (WHATIXO_API_KEY). Si elle a fuité, cliquez sur Régénérer la clé : l’ancienne cesse aussitôt de fonctionner.
2. Authentifier vos requêtes
Envoyez la clé dans l’en-tête x-api-key de chaque requête :
-H "x-api-key: wtx_7c1e9a4b2d8f…"
L’en-tête standard Authorization est aussi accepté :
-H "Authorization: Bearer wtx_7c1e9a4b2d8f…"
Sans clé ou avec une clé invalide, l’API répond 401. Si l’abonnement est suspendu, elle répond 402 avec le code API_ACCOUNT_SUSPENDED.
3. Votre premier appel
Envoyons « Bonjour » à votre propre numéro :
curl -X POST https://api.whatixo.com/api/whatsapp/messages/send \
-H "x-api-key: $WHATIXO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"deviceId": "8f2c1a7e-4b9d-4e21-9a6f-3c5d7e1b2a90",
"to": "243812345678",
"text": "Bonjour depuis l’API Whatixo 👋"
}'// Node.js 18+ (fetch natif)
const res = await fetch('https://api.whatixo.com/api/whatsapp/messages/send', {
method: 'POST',
headers: {
'x-api-key': process.env.WHATIXO_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
deviceId: '8f2c1a7e-4b9d-4e21-9a6f-3c5d7e1b2a90',
to: '243812345678',
text: 'Bonjour depuis l’API Whatixo 👋',
}),
});
const data = await res.json();
if (!res.ok) throw new Error(data.error);
console.log(data); // { success: true, message: 'Transmis avec succès' }$payload = [
'deviceId' => '8f2c1a7e-4b9d-4e21-9a6f-3c5d7e1b2a90',
'to' => '243812345678',
'text' => 'Bonjour depuis l’API Whatixo 👋',
];
$ch = curl_init('https://api.whatixo.com/api/whatsapp/messages/send');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'x-api-key: ' . getenv('WHATIXO_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($payload),
]);
$data = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);import os, requests
res = requests.post(
"https://api.whatixo.com/api/whatsapp/messages/send",
headers={"x-api-key": os.environ["WHATIXO_API_KEY"]},
json={
"deviceId": "8f2c1a7e-4b9d-4e21-9a6f-3c5d7e1b2a90",
"to": "243812345678",
"text": "Bonjour depuis l’API Whatixo 👋",
},
timeout=30,
)
res.raise_for_status()
print(res.json())Réponse :
{ "success": true, "message": "Transmis avec succès" }
Conventions
Numéros de téléphone
Au format international sans le + ni zéro initial : 243812345678 (RDC), 2250701020304 (Côte d’Ivoire), 33612345678 (France). Les espaces, tirets, parenthèses et le « + » sont retirés automatiquement : "+243 81 234 5678" est accepté.
Pour un groupe, passez son identifiant WhatsApp (JID) se terminant par @g.us, obtenu via la liste des groupes.
Format des réponses
Une réponse réussie contient "success": true et les données demandées. Une erreur renvoie un code HTTP 4xx/5xx et un message lisible :
{ "success": false, "error": "L'appareil n'est pas connecté." }
Quotas
Chaque message envoyé par l’API compte dans le quota mensuel de votre forfait, comme les messages envoyés depuis l’application.
Liste des points d’accès
| Ressource | Point d’accès | Rôle |
|---|---|---|
| Messages | POST /whatsapp/messages/send | Texte, image, vidéo, audio, note vocale, document |
| Contacts | POST /whatsapp/contacts | Lister les contacts du CRM |
POST /whatsapp/contacts/info | Lire un contact | |
POST /whatsapp/contacts/upsert | Créer ou mettre à jour un contact | |
POST /whatsapp/contacts/check | Vérifier si des numéros ont WhatsApp | |
POST /whatsapp/contacts/avatar | Photo de profil d’un numéro | |
| Groupes | POST /whatsapp/groups/create | Créer un groupe |
POST /whatsapp/groups/list | Lister les groupes | |
POST /whatsapp/groups/members | Lister les membres | |
POST /whatsapp/groups/members/{add|remove|promote|demote} | Gérer les membres et administrateurs | |
POST /whatsapp/groups/settings/{name|description} | Renommer, changer la description | |
| Statuts & session | POST /whatsapp/status/publish | Publier un statut |
POST /whatsapp/accounts/logout | Déconnecter un numéro | |
| Webhooks entrants | POST /webhook/{wh_id} | Déclencher un workflow |
