API des rappels
API de liste des rappels
Obtenez les rappels de votre espace de travail, 50 à la fois, des plus récents aux plus anciens. Utilisez-la pour retrouver les ID de vos rappels, auditer vos automatisations ou les sauvegarder.
https://wbiztool.com/api/v1/reminder/list/Corps: JSON ou champs de formulaire
Cet endpoint n'accepte que POST. Une requête GET, même avec une chaîne de requête, renvoie le code HTTP 400 avec Invalid JSON format: Expecting value….
La liste inclut les rappels actifs et en pause de tout l'espace de travail, qu'ils aient été créés via l'API ou sur la page Rappels. Les rappels annulés ne sont pas inclus.
Exemple rapide#
curl -X POST https://wbiztool.com/api/v1/reminder/list/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"page": 1
}'import requests
response = requests.post(
"https://wbiztool.com/api/v1/reminder/list/",
json={"client_id": 12345, "api_key": "YOUR_API_KEY", "page": 1},
timeout=60,
)
try:
result = response.json() # read the body even when the HTTP code is 400
except ValueError:
raise SystemExit(f"HTTP {response.status_code}: not JSON. Check that your api_key exists.")
if result["status"] == 1:
print(f"{result['total']} reminders in total")
for reminder in result["reminders"]:
print(reminder["id"], reminder["name"], reminder["cron_expression"], reminder["is_active"])
else:
print("Failed:", result["message"])// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v1/reminder/list/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ client_id: 12345, api_key: "YOUR_API_KEY", page: 1 }),
});
// Read the body even when the HTTP code is 400. A non-JSON reply means the api_key wasn't found.
const text = await response.text();
let result;
try {
result = JSON.parse(text);
} catch {
throw new Error(`HTTP ${response.status}: not JSON. Check that your api_key exists.`);
}
if (result.status === 1) {
console.log(`${result.total} reminders in total`);
for (const reminder of result.reminders) {
console.log(reminder.id, reminder.name, reminder.cron_expression, reminder.is_active);
}
} else {
console.error("Failed:", result.message);
}<?php
$ch = curl_init('https://wbiztool.com/api/v1/reminder/list/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'page' => 1,
]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($result === null) {
echo "HTTP $httpCode: not JSON. Check that your api_key exists.";
} elseif ($result['status'] === 1) {
foreach ($result['reminders'] as $reminder) {
echo $reminder['id'] . ' ' . $reminder['name'] . ' ' . $reminder['cron_expression'] . "\n";
}
} else {
echo 'Failed: ' . $result['message'];
}Remplacez 12345 et YOUR_API_KEY par vos propres valeurs. Consultez Authentification pour savoir où les trouver.
Paramètres de la requête#
client_idintegerobligatoireVotre ID client API, dans Paramètres → Clés API.
api_keystringobligatoireVotre clé API, sur cette même page.
pageintegerfacultatifNuméro de page, à partir de
1(valeur par défaut). Chaque page contient 50 rappels, et cette taille ne peut pas être modifiée. Une valeur qui n'est pas un nombre entier supérieur ou égal à 1 est traitée comme1.
Réponse#
Une requête réussie renvoie le code HTTP 200 :
{
"reminders": [
{
"id": 3187,
"name": "Monthly rent reminder",
"to_number": "919876543210",
"message_template": "Hi Aman, a reminder that your rent is due on {current_date_formatted}.",
"msg_type": 0,
"msg_type_display": "Text",
"img_url": "",
"file_name": "",
"cron_expression": "0 10 1 * *",
"next_run": "2026-10-01 10:00:00 UTC",
"is_active": true,
"whatsapp_client_id": 678,
"created_at": "2026-09-16 04:45:12"
}
],
"total": 1,
"page": 1,
"page_size": 50,
"message": "Success",
"status": 1
}
| Champ | Type | Description |
|---|---|---|
status | integer | 1 en cas de succès, 0 si la requête a échoué. |
message | string | Success, sinon l'erreur. |
reminders | array | Les rappels de cette page, des plus récents aux plus anciens. Vide si la page se situe au-delà de la fin. |
total | integer | Nombre de rappels dans l'espace de travail, toutes pages confondues. |
page | integer | La page renvoyée. |
page_size | integer | Toujours 50. |
Champs d'un rappel#
| Champ | Type | Description |
|---|---|---|
id | integer | L'ID du rappel. Utilisez-le avec Annuler un rappel. |
name | string | Le nom du rappel, ou Unnamed Reminder s'il n'en a pas. |
to_number | string | Numéro de téléphone ou nom du groupe auquel le rappel est envoyé. |
message_template | string | Le message, avec les variables de modèle non encore remplies. |
msg_type | integer | 0 texte, 1 image, 2 fichier. |
msg_type_display | string | Text, Image ou File. |
img_url | string or null | URL de l'image pour les rappels avec image, ou URL du fichier pour les rappels avec fichier créés via l'API. Peut être vide ou null sinon. |
file_name | string or null | Pour les rappels avec fichier : l'URL du fichier (rappels créés dans le tableau de bord) ou le nom du fichier (rappels créés via l'API, dont l'URL se trouve dans img_url). Peut être vide ou null sinon. |
cron_expression | string | La planification. Consultez Expressions cron. |
next_run | string | Prochaine date à laquelle la planification correspond, au format YYYY-MM-DD HH:MM:SS UTC, ou Invalid cron si l'expression ne peut pas être lue. Consultez l'avertissement ci-dessous. |
is_active | boolean | true si le rappel est actif, false s'il est en pause. |
whatsapp_client_id | integer or null | Le numéro WhatsApp depuis lequel il est envoyé, ou null s'il utilise le premier numéro connecté. |
created_at | string | Date de création du rappel, en UTC, au format YYYY-MM-DD HH:MM:SS. |
Erreurs#
Les erreurs renvoient le code HTTP 400 avec status à 0, sauf indication contraire :
{ "status": 0, "message": "Upgrade your plan to use reminders feature" }
| Message | Comment corriger |
|---|---|
Invalid JSON format: … | Le corps JSON n'est pas valide. Vous obtenez aussi ce message pour une requête GET ou une requête de formulaire sans client_id. |
Auth Error - Please send correct API key and Client id | Envoyez à la fois client_id et api_key. |
Invalid client id | Envoyez client_id sous forme de nombre. |
Auth Error: invalid api key | La clé appartient à un autre client_id. |
Auth Error: please check client id | La 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 APIs | Utilisez un compte standard. |
Upgrade your plan to use reminders feature | Votre forfait n'inclut pas les rappels. Passez à un forfait supérieur. Après un passage à un forfait inférieur, les rappels existants continuent de s'exécuter et de consommer des crédits, et ne peuvent être ni listés, ni annulés, ni suspendus tant que vous ne repassez pas à un forfait supérieur. |
Error fetching reminders: … (HTTP 500) | Un problème est survenu de notre côté. Réessayez. |
Si l'api_key n'existe pas ou a été supprimée, la réponse est une page d'erreur HTML avec le code HTTP 500 au lieu de JSON. Testez votre clé avec Vérifier les identifiants.
Lire toutes les pages#
Demandez la page suivante jusqu'à obtenir une page contenant moins de 50 rappels.
import requests
reminders, page = [], 1
while True:
response = requests.post(
"https://wbiztool.com/api/v1/reminder/list/",
json={"client_id": 12345, "api_key": "YOUR_API_KEY", "page": page},
timeout=60,
)
try:
result = response.json()
except ValueError:
raise SystemExit(f"HTTP {response.status_code}: not JSON. Check that your api_key exists.")
if result["status"] != 1:
raise RuntimeError(result["message"])
reminders += result["reminders"]
if len(result["reminders"]) < result["page_size"]:
break
page += 1
print(len(reminders), "reminders")// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const reminders = [];
let page = 1;
while (true) {
const response = await fetch("https://wbiztool.com/api/v1/reminder/list/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ client_id: 12345, api_key: "YOUR_API_KEY", page }),
});
const text = await response.text();
let result;
try {
result = JSON.parse(text);
} catch {
throw new Error(`HTTP ${response.status}: not JSON. Check that your api_key exists.`);
}
if (result.status !== 1) throw new Error(result.message);
reminders.push(...result.reminders);
if (result.reminders.length < result.page_size) break;
page += 1;
}
console.log(reminders.length, "reminders");Conseils#
- Conservez votre propre copie du
timezonede chaque rappel lors de sa création, car cet endpoint ne le renvoie pas. - Retrouvez les rappels en pause en filtrant sur
is_activeàfalse. Réactivez-les sur la page Rappels. - Faites le ménage dans vos anciennes automatisations : collectez d'abord, sur toutes les pages, les ID que vous souhaitez annuler, puis appelez Annuler un rappel pour chacun. Annuler pendant la pagination décale les rappels suivants vers des pages précédentes, si bien que certains sont ignorés.
