API v2 (beta)
Peringatan
Peringatan menghantar mesej yang sama kepada seorang penerima berulang kali mengikut jadual: sewa setiap bulan, kelas setiap Isnin, laporan setiap petang. Jadualnya ialah ungkapan cron 5 bahagian dalam zon waktu yang anda pilih. Peringatan yang dicipta dengan API sama seperti peringatan di halaman Peringatan dalam papan pemuka.
| Operasi | Endpoint | Skop |
|---|---|---|
| Cipta peringatan | POST /api/v2/reminders | reminders |
| Senaraikan peringatan | GET /api/v2/reminders | reminders |
| Dapatkan peringatan | GET /api/v2/reminders/{id} | reminders |
| Ubah, jeda atau sambung semula | PATCH /api/v2/reminders/{id} | reminders |
| Padam peringatan | DELETE /api/v2/reminders/{id} | reminders |
Mencipta dan mengubah peringatan memerlukan pelan yang merangkumi peringatan; jika tidak, ia menjawab 403 plan_required. Menyenaraikan, membaca, menjeda dan memadam berfungsi pada mana-mana pelan. Untuk mesej yang dihantar sekali pada masa yang ditetapkan, gunakan send_at dalam Hantar mesej sebaliknya.
Cipta peringatan#
https://wbiztool.com/api/v2/remindersBody: 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'];Respons (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"
}
Badan
namestringwajibNama untuk peringatan, sehingga 100 aksara, seperti yang dipaparkan di halaman Peringatan.
toobjectwajibTepat satu daripada
phone(format antarabangsa dengan+),group(nama tepat kumpulan WhatsApp),contact_idatauusername(Telegram), seperti dalam Mesej → Penerima.frominteger or nullWajib bagi kunci yang dihadkan kepada sebahagian nomboridnombor yang menghantarnya. Ia mesti disambungkan semasa anda menetapkannya. Jika tidak disertakan ataunull: mana-mana nombor ruang kerja yang disambungkan akan menghantarnya.textstringwajibMesej itu, sehingga 3,000 aksara. Ia juga menjadi kapsyen apabila
mediadihantar.mediaobject or nullpilihanImej atau fail untuk dihantar setiap kali:
urlataumedia_id, dan secara pilihantype, seperti dalam Mesej → Media.scheduleobjectwajibcron(wajib) dantimezone. Lihat Jadual.activebooleanpilihantrue(lalai) menjalankannya;falsemenciptanya dalam keadaan dijeda.
Jadual#
schedule.cron mempunyai lima bahagian yang dipisahkan oleh ruang: minit, jam, hari dalam bulan, bulan, hari dalam minggu. * bermaksud "setiap". Ia mesti jadual yang berjalan pada suatu masa (bukan 31 Februari).
cron | Berjalan |
|---|---|
0 9 * * 1 | Setiap Isnin pada 09:00 |
30 18 * * * | Setiap hari pada 18:30 |
0 10 1 * * | Hari pertama setiap bulan pada 10:00 |
0 9 * * 1-5 | Hari bekerja pada 09:00 |
0 8,20 * * * | Setiap hari pada 08:00 dan 20:00 |
0 9 15 1 * | 15 Januari pada 09:00, setiap tahun |
schedule.timezone ialah nama zon waktu IANA, seperti Asia/Kolkata, Europe/London atau America/New_York (lalai UTC). Masa cron mengikut zon itu, dan next_run_at juga diberikan dalam zon itu, dengan ofsetnya. Lihat rujukan zon waktu.
Setiap kali berjalan, ia menghantar mesej seperti mesej lain: ia memerlukan baki mesej dalam pelan dan muncul dalam Senaraikan mesej.
Ralat semasa mencipta#
| HTTP | Kod | Bila |
|---|---|---|
400 | validation_failed | Medan wajib tiada atau kosong, medan tidak dikenali atau terlalu panjang (name, to.group), atau media tidak sah |
400 | text_required | text kosong |
400 | text_too_long | text melebihi 3,000 aksara |
400 | invalid_cron | schedule.cron bukan 5 bahagian, atau tidak pernah berjalan |
400 | invalid_timezone | schedule.timezone bukan zon waktu IANA |
403 | plan_required | Pelan tidak merangkumi peringatan |
403 | number_not_allowed | Kunci dihadkan kepada sebahagian nombor dan from bukan salah satu daripadanya, atau tiada |
422 | invalid_phone | to.phone bukan nombor yang sah dalam format antarabangsa dengan + |
422 | invalid_username | to.username bukan nama pengguna, pautan atau ID tg: Telegram |
422 | username_needs_telegram | Nama pengguna Telegram, tetapi from bukan akaun Telegram (atau, tanpa from, tiada akaun Telegram yang disambungkan) |
422 | contact_not_found | Tiada kenalan dengan to.contact_id itu |
422 | media_not_found | Tiada fail dengan media.media_id itu |
422 | invalid_media_url | media.url bukan pautan http(s) awam |
422 | number_not_connected | from bukan nombor ruang kerja ini yang disambungkan |
Senaraikan peringatan#
https://wbiztool.com/api/v2/remindersPeringatan ruang kerja, yang terbaharu dahulu, dalam halaman (limit 1 hingga 100, lalai 25, dan cursor). Peringatan yang dijeda turut disertakan, dengan "active": false. Kunci yang dihadkan kepada sebahagian nombor hanya melihat peringatan yang dihantar dari nombor itu.
curl "https://wbiztool.com/api/v2/reminders?limit=50" \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
Responsnya ialah {"data": [Reminder, …], "next_cursor": "…" or null}.
Dapatkan peringatan#
https://wbiztool.com/api/v2/reminders/{id}curl https://wbiztool.com/api/v2/reminders/812 \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
Peringatan yang tidak wujud, telah dipadam, atau dihantar dari nombor yang tidak boleh digunakan oleh kunci menjawab 404 reminder_not_found.
Ubah, jeda atau sambung semula peringatan#
https://wbiztool.com/api/v2/reminders/{id}Body: JSON (application/json)
Hantar hanya medan yang berubah; yang lain mengekalkan nilainya. Medannya sama seperti Cipta peringatan. Responsnya ialah 200 dengan peringatan seperti keadaannya sekarang.
- Jeda:
{"active": false}. Ia berhenti berjalan dannext_run_atmenjadinull. Menjeda berfungsi pada mana-mana pelan. - Sambung semula:
{"active": true}. Ia berjalan semula dari masa seterusnya. Menyambung semula memerlukan pelan yang merangkumi peringatan. schedulediganti sepenuhnya: hantarcronbersamanya. Tanpatimezone, peringatan mengekalkan zon waktunya yang sedia ada.
# 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']);Perubahan menjawab dengan ralat yang sama seperti semasa mencipta, dan 404 reminder_not_found. Jika satu medan salah, tiada apa yang diubah.
Padam peringatan#
https://wbiztool.com/api/v2/reminders/{id}Memadam peringatan: ia tidak akan berjalan lagi. Mesej yang telah dihantarnya kekal dalam sejarah. Untuk menghentikannya buat sementara waktu sebaliknya, jedakannya.
curl -X DELETE https://wbiztool.com/api/v2/reminders/812 \
-H "Authorization: Bearer $WBIZTOOL_API_KEY"
{ "id": 812, "deleted": true }
Objek Reminder#
| Medan | Jenis | Penerangan |
|---|---|---|
id | integer | ID peringatan. |
name | string | Namanya. |
active | boolean | true semasa ia berjalan, false semasa ia dijeda. |
to | object | Penerima: phone (dengan +), group atau username. Peringatan yang dicipta dengan contact_id menunjukkan nombor atau kumpulan kenalan itu. |
from | integer or null | id nombor penghantar, atau null untuk mana-mana nombor yang disambungkan. |
text | string | Mesej itu. |
media | object or null | type (image atau file), url dan file_name. |
schedule | object | cron dan timezone. |
next_run_at | string or null | Bila ia berjalan seterusnya, dalam zon waktunya dengan ofset, seperti 2026-10-19T09:00:00+05:30. null semasa ia dijeda. |
created_at | string | Bila ia dicipta (UTC). |
Berkaitan#
- Peringatan dalam papan pemuka
- Rujukan zon waktu
- Mesej: satu mesej pada masa yang ditetapkan dengan
send_at - Ralat
