Aller au contenu
Wbiztool

API des rappels

API de création de rappels

Créez un message WhatsApp récurrent, envoyé automatiquement selon une planification. Utilisez-la pour les rappels de paiement, les points hebdomadaires, les relances quotidiennes et tout autre message qui se répète.

POSThttps://wbiztool.com/api/v1/reminder/create/

Corps: JSON ou champs de formulaire

Vous décrivez la planification avec une expression cron et un fuseau horaire. Chaque fois que la planification correspond, Wbiztool met en file d'attente un message vers le numéro de téléphone ou le groupe, exactement comme un message envoyé avec Envoyer un message. Les rappels créés ici apparaissent aussi sur la page Rappels de votre tableau de bord, où vous pouvez les mettre en pause ou les modifier.

Exemple rapide#

curl -X POST https://wbiztool.com/api/v1/reminder/create/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "reminder_name": "Monthly rent reminder",
    "phone": "919876543210",
    "message": "Hi Aman, a reminder that your rent is due on {current_date_formatted}.",
    "cron_expression": "0 10 1 * *",
    "timezone": "Asia/Kolkata"
  }'

Ce rappel est envoyé à 10:00, heure de l'Inde, le 1er de chaque mois. Remplacez 12345, YOUR_API_KEY et 678 par vos propres valeurs. Consultez Authentification pour savoir où les trouver.

Paramètres de la requête#

Envoyez les paramètres dans un corps JSON ou sous forme de champs de formulaire. En JSON, envoyez chaque valeur textuelle (api_key, reminder_name, phone, message, cron_expression, timezone, img_url, file_name) sous forme de chaîne.

Authentification

client_idintegerobligatoire

Votre ID client API, dans Paramètres → Clés API.

api_keystringobligatoire

Votre clé API, sur cette même page.

Expéditeur

whatsapp_clientintegerfacultatif

ID du numéro WhatsApp depuis lequel envoyer, dans les paramètres WhatsApp. Si vous l'omettez, ou si l'ID ne fait pas partie de votre espace de travail, chaque rappel est envoyé depuis le premier numéro connecté de votre espace de travail au moment de son exécution.

Rappel

reminder_namestringobligatoire

Un nom pour le rappel, affiché sur la page Rappels et disponible dans le message sous la forme {reminder_name}.

phonestringobligatoire

Le numéro WhatsApp du destinataire avec son indicatif pays, par exemple 919876543210. Il n'existe pas de paramètre country_code distinct. Les espaces, +, -, . et les parenthèses sont supprimés, ainsi qu'un 0 initial (jusqu'à deux zéros initiaux dans un corps JSON). Une valeur qui n'est pas composée uniquement de chiffres est traitée comme un nom de groupe WhatsApp.

messagestringobligatoire

Le texte du message. Il peut contenir des variables de modèle qui sont remplies à chaque exécution du rappel. La mise en forme WhatsApp fonctionne : *bold*, _italic_, ~strikethrough~.

cron_expressionstringobligatoire

Le moment de l'envoi, sous forme d'expression cron à cinq champs comme 0 9 * * 1-5. Consultez Expressions cron.

timezonestringfacultatif

Le fuseau horaire dans lequel s'exécute l'expression cron, sous forme de nom de fuseau horaire IANA comme Asia/Kolkata, America/New_York ou Europe/London. Omettez-le pour utiliser UTC. Une chaîne vide renvoie Invalid timezone. Consultez la Référence des fuseaux horaires pour la liste complète.

Images et fichiers

msg_typeintegerfacultatif

0 texte (par défaut), 1 image ou 2 fichier, avec message comme légende. Toute autre valeur est traitée comme 0.

img_urlstringObligatoire lorsque msg_type vaut 1 ou 2

URL publique http ou https de l'image, ou du fichier pour msg_type 2, jusqu'à 1 000 caractères. Elle est téléchargée à chaque exécution du rappel : veillez donc à ce que le lien reste valide. Vous pouvez héberger des fichiers avec l'API de téléversement de médias.

file_namestringObligatoire lorsque msg_type vaut 2

Pour msg_type 2, le nom du fichier avec son extension, jusqu'à 100 caractères, par exemple invoice.pdf. Ignoré pour les autres types de message.

Expressions cron#

Une expression cron est composée de cinq valeurs séparées par des espaces. Le rappel s'exécute chaque fois que l'heure actuelle dans timezone correspond aux cinq valeurs :

┌───────── minute        (0-59)
│ ┌─────── hour          (0-23)
│ │ ┌───── day of month  (1-31)
│ │ │ ┌─── month         (1-12)
│ │ │ │ ┌─ day of week   (0-7, where 0 and 7 are Sunday)
│ │ │ │ │
0 9 * * 1-5
SymboleSignificationExemple
*Toutes les valeurs* dans le champ des heures signifie toutes les heures.
,Une liste de valeurs9,18 dans le champ des heures signifie 9:00 et 18:00.
-Une plage1-5 dans le champ du jour de la semaine signifie du lundi au vendredi.
/Un pas*/6 dans le champ des heures signifie toutes les 6 heures.

Exemples courants#

ExpressionS'exécute
0 9 * * *Tous les jours à 9:00
0 9 * * 1-5Du lundi au vendredi à 9:00
0 9 * * 1Tous les lundis à 9:00
30 18 * * 0Tous les dimanches à 18:30
0 9,18 * * *Tous les jours à 9:00 et 18:00
0 */6 * * *Toutes les 6 heures, à l'heure pile
*/30 9-17 * * 1-5Toutes les 30 minutes de 9:00 à 17:30, du lundi au vendredi
0 9 1 * *Le 1er de chaque mois à 9:00
0 10 15 * *Le 15 de chaque mois à 10:00
0 8 1 1 *Chaque 1er janvier à 8:00

Les heures sont exprimées dans le timezone du rappel. Utilisez uniquement cinq champs : n'ajoutez pas de champ pour les secondes ni de raccourcis comme @daily.

Variables de modèle#

Ces espaces réservés dans message sont remplacés à chaque exécution du rappel. Les dates et heures sont exprimées dans le timezone du rappel.

VariableRemplacée parExemple
{current_date}Date2026-10-01
{current_date_formatted}Date en toutes lettres, jour complété par un zéroOctober 01, 2026
{current_time}Heure au format 24 heures09:00:00
{current_time_12h}Heure au format 12 heures09:00 AM
{current_datetime}Date et heure2026-10-01 09:00:00
{timezone}La valeur de timezoneAsia/Kolkata
{timezone_short}Abréviation du fuseau horaireIST
{reminder_name}La valeur de reminder_nameMonthly rent reminder
{to_number}La valeur de phone enregistrée919876543210
{client_name}Nom du propriétaire de l'espace de travail
{organisation_name}Nom de votre espace de travail

Rappel avec image#

Rappel hebdomadaire avec image
curl -X POST https://wbiztool.com/api/v1/reminder/create/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "reminder_name": "Weekly class timetable",
    "phone": "919876543210",
    "msg_type": 1,
    "img_url": "https://example.com/timetable.png",
    "message": "Here is this week'\''s timetable.",
    "cron_expression": "0 8 * * 1",
    "timezone": "Asia/Kolkata"
  }'

L'exemple PHP envoie des champs de formulaire au lieu de JSON. Les deux fonctionnent.

Réponse#

Une requête réussie renvoie le code HTTP 200 :

{
  "reminder_id": 3187,
  "message": "Reminder created successfully",
  "status": 1
}
ChampTypeDescription
statusinteger1 si le rappel a été créé, 0 si la requête a échoué.
messagestringReminder created successfully, sinon l'erreur.
reminder_idintegerID du nouveau rappel. Enregistrez-le pour pouvoir annuler le rappel plus tard. Présent uniquement en cas de succès.

Les nouveaux rappels sont actifs immédiatement.

Erreurs#

Les erreurs renvoient le code HTTP 400 avec status à 0, sauf indication contraire :

{ "status": 0, "message": "Invalid timezone" }
MessageComment corriger
Invalid JSON format: …Le corps JSON n'est pas valide, souvent à cause d'une virgule finale ou d'un saut de ligne non échappé dans message. Utilisez \n pour les retours à la ligne. Vous obtenez aussi ce message pour une requête de formulaire sans client_id, ou pour toute requête GET.
Invalid client id.Envoyez client_id sous forme de nombre.
Reminder name cannot be nullAjoutez reminder_name.
Phone number cannot be nullAjoutez phone.
Message template cannot be nullAjoutez message.
Cron expression cannot be nullAjoutez cron_expression.
Auth Error - Please send correct API key and Client idEnvoyez une api_key non vide.
Invalid cron expressionVérifiez que l'expression comporte cinq champs valides. Consultez Expressions cron.
Invalid timezoneUtilisez un nom IANA comme Asia/Kolkata, et non une abréviation comme IST.
Image URL cannot be null for image messagesPour msg_type 1, envoyez img_url.
File URL cannot be null for file messagesPour msg_type 2, envoyez file_name.
Auth Error: invalid api keyLa clé appartient à un autre client_id.
Auth Error: please check client idLa clé n'est liée à aucun espace de travail. Créez une nouvelle clé dans l'espace de travail que vous souhaitez utiliser.
Demo Account cannot access APIsUtilisez un compte standard.
Not enough creditsVotre forfait n'a plus de messages disponibles.
Upgrade your plan to use reminders featureVotre forfait n'inclut pas les rappels. Passez à un forfait supérieur.
WhatsApp Logged Out. Please Reconnect!!Le numéro whatsapp_client est déconnecté. Reconnectez-le dans les paramètres WhatsApp.
Invalid WhatsApp client idEnvoyez whatsapp_client sous forme de nombre.
Error creating reminder: … (HTTP 500)Le rappel n'a pas pu être enregistré. Vérifiez les valeurs envoyées, par exemple que img_url ne dépasse pas 1 000 caractères et file_name pas 100.

Exécution des rappels#

  • La planification est évaluée dans le timezone du rappel, et le message est mis en file d'attente lorsque l'heure actuelle correspond à l'expression cron.
  • Chaque exécution crée un message normal envoyé depuis votre numéro WhatsApp : le numéro doit donc rester connecté.
  • Une exécution est ignorée si votre espace de travail n'a plus de crédits, ou si aucun whatsapp_client n'a été défini et qu'aucun numéro de votre espace de travail n'est connecté à ce moment-là.
  • Si whatsapp_client est défini, chaque exécution est mise en file d'attente sur ce numéro, même s'il a été déconnecté entre-temps, et y attend. Il n'y a pas de repli sur un autre numéro.
  • Les rappels sont vérifiés périodiquement, et non à la seconde près, puis le message attend dans la file d'envoi comme n'importe quel autre. Ne comptez pas sur un horaire exact. Si une vérification a du retard, l'exécution est tout de même envoyée jusqu'à 10 minutes en retard (jusqu'à 1 minute pour la première exécution d'un rappel) ; au-delà, elle est ignorée. Une même exécution n'est jamais envoyée deux fois.

Conseils#

  • Lister et faire le ménage : obtenez vos rappels et leurs ID avec Lister les rappels, et arrêtez-en un avec Annuler un rappel.
  • La mise en pause et la modification ne sont pas disponibles via l'API. Utilisez la page Rappels de votre tableau de bord.
  • Nombreux rappels à la fois : la page Rappels permet aussi d'importer des rappels depuis un fichier CSV.
  • Retours à la ligne en JSON : écrivez-les sous la forme \n dans message. Un saut de ligne brut rend le JSON invalide.