API v2 (בטא)
תזכורות
תזכורת שולחת את אותה הודעה לנמען אחד שוב ושוב לפי לוח זמנים: שכר דירה בכל חודש, שיעור בכל יום שני, דוח בכל ערב. לוח הזמנים הוא ביטוי cron בן 5 חלקים, באזור זמן שאתם בוחרים. תזכורות שנוצרות עם ה-API זהות לאלה שבדף תזכורות בלוח הבקרה.
| פעולה | Endpoint | הרשאה |
|---|---|---|
| יצירת תזכורת | POST /api/v2/reminders | reminders |
| רשימת תזכורות | GET /api/v2/reminders | reminders |
| קבלת תזכורת | GET /api/v2/reminders/{id} | reminders |
| שינוי, השהיה או חידוש | PATCH /api/v2/reminders/{id} | reminders |
| מחיקת תזכורת | DELETE /api/v2/reminders/{id} | reminders |
יצירה ושינוי של תזכורות דורשים תוכנית שכוללת תזכורות; אחרת התגובה היא 403 plan_required. הצגה, קריאה, השהיה ומחיקה עובדות בכל תוכנית. להודעה שיוצאת פעם אחת במועד מסוים, השתמשו במקום זאת ב-send_at בשליחת הודעה.
יצירת תזכורת#
https://wbiztool.com/api/v2/remindersגוף הבקשה: JSON (application/json)
curl -X POST https://wbiztool.com/api/v2/reminders \
-H "Authorization: Bearer $WBIZTOOL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: rent-flat-4b" \
-d '{
"name": "Weekly rent",
"from": 101,
"to": { "phone": "+919876543210" },
"text": "Hi, a reminder that the rent is due on Friday.",
"schedule": { "cron": "0 9 * * 1", "timezone": "Asia/Kolkata" }
}'import os
import requests
response = requests.post(
"https://wbiztool.com/api/v2/reminders",
headers={
"Authorization": f"Bearer {os.environ['WBIZTOOL_API_KEY']}",
"Idempotency-Key": "rent-flat-4b",
},
json={
"name": "Weekly rent",
"from": 101,
"to": {"phone": "+919876543210"},
"text": "Hi, a reminder that the rent is due on Friday.",
"schedule": {"cron": "0 9 * * 1", "timezone": "Asia/Kolkata"},
},
timeout=30,
)
reminder = response.json()
print(response.status_code, reminder.get("id"), reminder.get("next_run_at"))// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v2/reminders", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.WBIZTOOL_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": "rent-flat-4b",
},
body: JSON.stringify({
name: "Weekly rent",
from: 101,
to: { phone: "+919876543210" },
text: "Hi, a reminder that the rent is due on Friday.",
schedule: { cron: "0 9 * * 1", timezone: "Asia/Kolkata" },
}),
});
const reminder = await response.json();
console.log(response.status, reminder.id, reminder.next_run_at);<?php
$ch = curl_init('https://wbiztool.com/api/v2/reminders');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('WBIZTOOL_API_KEY'),
'Content-Type: application/json',
'Idempotency-Key: rent-flat-4b',
],
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Weekly rent',
'from' => 101,
'to' => ['phone' => '+919876543210'],
'text' => 'Hi, a reminder that the rent is due on Friday.',
'schedule' => ['cron' => '0 9 * * 1', 'timezone' => 'Asia/Kolkata'],
]),
CURLOPT_RETURNTRANSFER => true,
]);
$reminder = json_decode(curl_exec($ch), true);
curl_close($ch);
echo $reminder['id'] . ' next: ' . $reminder['next_run_at'];תגובה (201):
{
"id": 812,
"name": "Weekly rent",
"active": true,
"to": { "phone": "+919876543210" },
"from": 101,
"text": "Hi, a reminder that the rent is due on Friday.",
"media": null,
"schedule": { "cron": "0 9 * * 1", "timezone": "Asia/Kolkata" },
"next_run_at": "2026-10-19T09:00:00+05:30",
"created_at": "2026-10-18T10:20:11.004Z"
}
גוף הבקשה
namestringחובהשם לתזכורת, עד 100 תווים, כפי שהוא מוצג בדף תזכורות.
toobjectחובהבדיוק אחד מהשדות
phone(בפורמט בינלאומי עם+), group(השם המדויק של קבוצת WhatsApp), contact_idאוusername(Telegram), כמו בהודעות ← נמענים.frominteger or nullחובה במפתח שמוגבל לחלק מהמספריםה-
idשל המספר ששולח אותה. הוא חייב להיות מחובר כשאתם מגדירים אותו. אם לא תשלחו אותו, או תשלחוnull: כל מספר מחובר של סביבת העבודה שולח אותה.textstringחובהההודעה, עד 3,000 תווים. זה גם הכיתוב כשנשלחת
media.mediaobject or nullאופציונליתמונה או קובץ לשליחה בכל פעם:
urlאוmedia_id, ואם תרצו גםtype, כמו בהודעות ← מדיה.scheduleobjectחובה
cron(חובה) ו-timezone. ראו לוח זמנים.activebooleanאופציונלי
true(ברירת המחדל) מפעיל אותה;falseיוצר אותה מושהית.
לוח זמנים#
ל-schedule.cron יש חמישה חלקים שמופרדים ברווחים: דקה, שעה, יום בחודש, חודש, יום בשבוע. * פירושו "כל". זה חייב להיות לוח זמנים שרץ בשלב כלשהו (לא 31 בפברואר).
cron | רץ |
|---|---|
0 9 * * 1 | בימי שני ב-09:00 |
30 18 * * * | כל יום ב-18:30 |
0 10 1 * * | ב-1 בכל חודש ב-10:00 |
0 9 * * 1-5 | בימי חול (שני עד שישי) ב-09:00 |
0 8,20 * * * | כל יום ב-08:00 וב-20:00 |
0 9 15 1 * | ב-15 בינואר ב-09:00, בכל שנה |
schedule.timezone הוא שם של אזור זמן לפי IANA, למשל Asia/Kolkata, Europe/London או America/New_York (ברירת המחדל UTC). זמני ה-cron הם באזור הזה, וגם next_run_at מוצג בו, עם ההיסט שלו. ראו את מדריך אזורי הזמן.
כל הרצה שולחת הודעה כמו כל הודעה אחרת: נדרשות הודעות שנותרו בתוכנית, והיא מופיעה ברשימת הודעות.
שגיאות ביצירה#
| HTTP | קוד | מתי |
|---|---|---|
400 | validation_failed | שדה חובה חסר או ריק, שדה לא מוכר או ארוך מדי (name, to.group), או ש-media לא תקין |
400 | text_required | text ריק |
400 | text_too_long | text ארוך מ-3,000 תווים |
400 | invalid_cron | ב-schedule.cron אין 5 חלקים, או שהוא אף פעם לא רץ |
400 | invalid_timezone | schedule.timezone אינו אזור זמן של IANA |
403 | plan_required | התוכנית לא כוללת תזכורות |
403 | number_not_allowed | המפתח מוגבל לחלק מהמספרים, ו-from אינו אחד מהם, או חסר |
422 | invalid_phone | to.phone אינו מספר תקין בפורמט בינלאומי עם + |
422 | invalid_username | to.username אינו שם משתמש, קישור או מזהה tg: של Telegram |
422 | username_needs_telegram | שם משתמש של Telegram, אבל from אינו חשבון Telegram (או, בלי from, אין חשבון Telegram מחובר) |
422 | contact_not_found | אין איש קשר עם ה-to.contact_id הזה |
422 | media_not_found | אין קובץ עם ה-media.media_id הזה |
422 | invalid_media_url | media.url אינו קישור http(s) ציבורי |
422 | number_not_connected | from אינו מספר מחובר של סביבת העבודה הזו |
רשימת תזכורות#
https://wbiztool.com/api/v2/remindersהתזכורות של סביבת העבודה, מהחדשה לישנה, בדפים (limit מ-1 עד 100, ברירת המחדל 25, ו-cursor). גם תזכורות מושהות כלולות, עם "active": false. מפתח שמוגבל לחלק מהמספרים רואה רק את התזכורות שנשלחות מהם.
curl "https://wbiztool.com/api/v2/reminders?limit=50" \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
התגובה היא {"data": [Reminder, …], "next_cursor": "…" or null}.
קבלת תזכורת#
https://wbiztool.com/api/v2/reminders/{id}curl https://wbiztool.com/api/v2/reminders/812 \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
תזכורת שלא קיימת, שנמחקה, או שנשלחת ממספר שהמפתח לא רשאי להשתמש בו מחזירה 404 reminder_not_found.
שינוי, השהיה או חידוש של תזכורת#
https://wbiztool.com/api/v2/reminders/{id}גוף הבקשה: JSON (application/json)
שלחו רק את השדות שמשתנים; השאר שומרים על הערכים שלהם. השדות הם אלה של יצירת תזכורת. התגובה היא 200 עם התזכורת כפי שהיא עכשיו.
- השהיה:
{"active": false}. היא מפסיקה לרוץ ו-next_run_atהופך ל-null. השהיה עובדת בכל תוכנית. - חידוש:
{"active": true}. היא רצה שוב מהמועד הבא שלה. חידוש דורש תוכנית עם תזכורות. -
scheduleמוחלף כולו: שלחו איתו אתcron. בליtimezone, התזכורת שומרת על אזור הזמן הנוכחי שלה.
# Pause
curl -X PATCH https://wbiztool.com/api/v2/reminders/812 \
-H "Authorization: Bearer $WBIZTOOL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"active": false}'
# Move it to Fridays at 10:00 and change the text
curl -X PATCH https://wbiztool.com/api/v2/reminders/812 \
-H "Authorization: Bearer $WBIZTOOL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"schedule": {"cron": "0 10 * * 5"}, "text": "Hi, the rent is due today."}'import os
import requests
headers = {"Authorization": f"Bearer {os.environ['WBIZTOOL_API_KEY']}"}
url = "https://wbiztool.com/api/v2/reminders/812"
paused = requests.patch(url, headers=headers, json={"active": False}, timeout=30).json()
print(paused["active"], paused["next_run_at"]) # False None
resumed = requests.patch(url, headers=headers, json={"active": True}, timeout=30).json()
print(resumed["active"], resumed["next_run_at"])// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v2/reminders/812", {
method: "PATCH",
headers: { Authorization: `Bearer ${process.env.WBIZTOOL_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ active: false }),
});
const reminder = await response.json();
console.log(reminder.active, reminder.next_run_at); // false null<?php
$ch = curl_init('https://wbiztool.com/api/v2/reminders/812');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('WBIZTOOL_API_KEY'), 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['active' => false]),
CURLOPT_RETURNTRANSFER => true,
]);
$reminder = json_decode(curl_exec($ch), true);
curl_close($ch);
var_dump($reminder['active']);שינוי מחזיר את אותן שגיאות כמו יצירה, וגם 404 reminder_not_found. אם שדה אחד שגוי, שום דבר לא משתנה.
מחיקת תזכורת#
https://wbiztool.com/api/v2/reminders/{id}מוחק את התזכורת: היא לא תרוץ יותר אף פעם. הודעות שהיא כבר שלחה נשארות בהיסטוריה. כדי לעצור אותה לזמן מה במקום זאת, השהו אותה.
curl -X DELETE https://wbiztool.com/api/v2/reminders/812 \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
{ "id": 812, "deleted": true }
האובייקט Reminder#
| שדה | סוג | תיאור |
|---|---|---|
id | integer | המזהה של התזכורת. |
name | string | השם שלה. |
active | boolean | true כשהיא רצה, false כשהיא מושהית. |
to | object | הנמען: phone (עם +), group או username. תזכורת שנוצרה עם contact_id מציגה את המספר או את הקבוצה של איש הקשר. |
from | integer or null | ה-id של המספר השולח, או null לכל מספר מחובר. |
text | string | ההודעה. |
media | object or null | type (image או file), url ו-file_name. |
schedule | object | cron ו-timezone. |
next_run_at | string or null | מתי היא רצה בפעם הבאה, באזור הזמן שלה עם ההיסט, למשל 2026-10-19T09:00:00+05:30. null כשהיא מושהית. |
created_at | string | מתי היא נוצרה (UTC). |
מדריכים קשורים#
- תזכורות בלוח הבקרה
- מדריך אזורי זמן
- הודעות: הודעה אחת במועד מסוים עם
send_at - שגיאות
