Langsung ke konten
WbizTool

API v2 (beta)

Pengingat

Pengingat mengirim pesan yang sama ke satu penerima berulang kali sesuai jadwal: sewa setiap bulan, kelas setiap Senin, laporan setiap sore. Jadwalnya berupa ekspresi cron 5 bagian di zona waktu yang Anda pilih. Pengingat yang dibuat dengan API sama dengan pengingat di halaman Pengingat di dashboard.

OperasiEndpointScope
Membuat pengingatPOST /api/v2/remindersreminders
Daftar pengingatGET /api/v2/remindersreminders
Mengambil pengingatGET /api/v2/reminders/{id}reminders
Mengubah, menjeda, atau melanjutkanPATCH /api/v2/reminders/{id}reminders
Menghapus pengingatDELETE /api/v2/reminders/{id}reminders

Membuat dan mengubah pengingat memerlukan paket yang mencakup pengingat; jika tidak, dijawab dengan 403 plan_required. Menampilkan, membaca, menjeda, dan menghapus berfungsi di paket apa pun. Untuk pesan yang dikirim sekali pada waktu tertentu, gunakan send_at di Mengirim pesan.

Membuat pengingat#

POSThttps://wbiztool.com/api/v2/reminders

Body: 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" }
  }'

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"
}

Body

namestringwajib

Nama pengingat, hingga 100 karakter, seperti yang tampil di halaman Pengingat.

toobjectwajib

Tepat satu dari phone (format internasional dengan +), group (nama persis grup WhatsApp), contact_id, atau username (Telegram), seperti di Pesan → Penerima.

frominteger or nullWajib untuk kunci yang dibatasi ke sebagian nomor

id nomor yang mengirimnya. Nomor itu harus terhubung saat Anda mengaturnya. Jika tidak dikirim atau null: nomor terhubung mana pun di workspace yang mengirimnya.

textstringwajib

Isi pesan, hingga 3.000 karakter. Ini juga menjadi keterangan saat media dikirim.

mediaobject or nullopsional

Gambar atau file yang dikirim setiap kali: url atau media_id, dan opsional type, seperti di Pesan → Media.

scheduleobjectwajib

cron (wajib) dan timezone. Lihat Jadwal.

activebooleanopsional

true (default) menjalankannya; false membuatnya dalam keadaan dijeda.

Jadwal#

schedule.cron memiliki lima bagian yang dipisahkan spasi: menit, jam, tanggal, bulan, hari dalam seminggu. * berarti "setiap". Jadwalnya harus benar-benar berjalan pada suatu waktu (bukan 31 Februari).

cronBerjalan
0 9 * * 1Setiap Senin pukul 09.00
30 18 * * *Setiap hari pukul 18.30
0 10 1 * *Tanggal 1 setiap bulan pukul 10.00
0 9 * * 1-5Hari kerja pukul 09.00
0 8,20 * * *Setiap hari pukul 08.00 dan 20.00
0 9 15 1 *15 Januari pukul 09.00, setiap tahun

schedule.timezone adalah nama zona waktu IANA, seperti Asia/Kolkata, Europe/London, atau America/New_York (default UTC). Waktu cron mengikuti zona itu, dan next_run_at juga diberikan dalam zona itu, beserta offset-nya. Lihat referensi zona waktu.

Setiap kali berjalan, pengingat mengirim pesan seperti pesan lainnya: memerlukan sisa pesan di paket dan muncul di Daftar pesan.

Error saat membuat#

HTTPKodeKapan
400validation_failedField wajib tidak ada atau kosong, ada field yang tidak dikenal atau terlalu panjang (name, to.group), atau media tidak valid
400text_requiredtext kosong
400text_too_longtext lebih dari 3.000 karakter
400invalid_cronschedule.cron tidak terdiri dari 5 bagian, atau tidak pernah berjalan
400invalid_timezoneschedule.timezone bukan zona waktu IANA
403plan_requiredPaket tidak mencakup pengingat
403number_not_allowedKunci dibatasi ke sebagian nomor dan from bukan salah satunya, atau tidak dikirim
422invalid_phoneto.phone bukan nomor yang valid dalam format internasional dengan +
422invalid_usernameto.username bukan username, tautan, atau ID tg: Telegram
422username_needs_telegramUsername Telegram, tetapi from bukan akun Telegram (atau, tanpa from, tidak ada akun Telegram yang terhubung)
422contact_not_foundTidak ada kontak dengan to.contact_id tersebut
422media_not_foundTidak ada file dengan media.media_id tersebut
422invalid_media_urlmedia.url bukan tautan http(s) publik
422number_not_connectedfrom bukan nomor terhubung di workspace ini

Daftar pengingat#

GEThttps://wbiztool.com/api/v2/reminders

Pengingat workspace, yang terbaru lebih dulu, dalam halaman (limit 1 hingga 100, default 25, dan cursor). Pengingat yang dijeda ikut ditampilkan, dengan "active": false. Kunci yang dibatasi ke sebagian nomor hanya melihat pengingat yang dikirim dari nomor-nomor itu.

curl "https://wbiztool.com/api/v2/reminders?limit=50" \
  -H "Authorization: Bearer $WBIZTOOL_API_KEY"

Responsnya {"data": [Reminder, …], "next_cursor": "…" or null}.

Mengambil pengingat#

GEThttps://wbiztool.com/api/v2/reminders/{id}
curl https://wbiztool.com/api/v2/reminders/812 \
  -H "Authorization: Bearer $WBIZTOOL_API_KEY"

Pengingat yang tidak ada, sudah dihapus, atau dikirim dari nomor yang tidak boleh digunakan oleh kunci dijawab dengan 404 reminder_not_found.

Mengubah, menjeda, atau melanjutkan pengingat#

PATCHhttps://wbiztool.com/api/v2/reminders/{id}

Body: JSON (application/json)

Kirim hanya field yang berubah; field lain tetap dengan nilainya. Field-nya sama dengan Membuat pengingat. Responsnya 200 dengan pengingat sebagaimana kondisinya sekarang.

  • Menjeda: {"active": false}. Pengingat berhenti berjalan dan next_run_at menjadi null. Menjeda berfungsi di paket apa pun.
  • Melanjutkan: {"active": true}. Pengingat berjalan lagi mulai dari waktu berikutnya. Melanjutkan memerlukan paket yang mencakup pengingat.
  • schedule diganti secara keseluruhan: kirim cron bersamanya. Tanpa timezone, pengingat tetap memakai zona waktunya saat ini.
# 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."}'

Perubahan dijawab dengan error yang sama seperti saat membuat, ditambah 404 reminder_not_found. Jika satu field salah, tidak ada yang diubah.

Menghapus pengingat#

DELETEhttps://wbiztool.com/api/v2/reminders/{id}

Menghapus pengingat: pengingat tidak akan pernah berjalan lagi. Pesan yang sudah dikirimnya tetap ada di riwayat. Untuk menghentikannya sementara, jeda pengingat.

curl -X DELETE https://wbiztool.com/api/v2/reminders/812 \
  -H "Authorization: Bearer $WBIZTOOL_API_KEY"
{ "id": 812, "deleted": true }

Objek Reminder#

FieldJenisKeterangan
idintegerID pengingat.
namestringNamanya.
activebooleantrue selama berjalan, false selama dijeda.
toobjectPenerima: phone (dengan +), group, atau username. Pengingat yang dibuat dengan contact_id menampilkan nomor atau grup kontak tersebut.
frominteger or nullid nomor pengirim, atau null untuk nomor terhubung mana pun.
textstringIsi pesan.
mediaobject or nulltype (image atau file), url, dan file_name.
scheduleobjectcron dan timezone.
next_run_atstring or nullKapan pengingat berjalan berikutnya, dalam zona waktunya beserta offset, seperti 2026-10-19T09:00:00+05:30. null selama dijeda.
created_atstringKapan pengingat dibuat (UTC).

Terkait#