Zum Inhalt springen
WbizTool

API v2 (Beta)

Erinnerungen

Eine Erinnerung sendet dieselbe Nachricht immer wieder nach einem Zeitplan an einen Empfänger: die Miete jeden Monat, ein Kurs jeden Montag, ein Bericht jeden Abend. Der Zeitplan ist ein 5-teiliger Cron-Ausdruck in einer Zeitzone Ihrer Wahl. Erinnerungen, die mit der API erstellt werden, sind dieselben wie auf der Seite Erinnerungen im Dashboard.

VorgangEndpointScope
Erinnerung erstellenPOST /api/v2/remindersreminders
Erinnerungen auflistenGET /api/v2/remindersreminders
Eine Erinnerung abrufenGET /api/v2/reminders/{id}reminders
Ändern, pausieren oder fortsetzenPATCH /api/v2/reminders/{id}reminders
Erinnerung löschenDELETE /api/v2/reminders/{id}reminders

Zum Erstellen und Ändern von Erinnerungen ist ein Plan nötig, der Erinnerungen enthält; sonst lautet die Antwort 403 plan_required. Auflisten, Lesen, Pausieren und Löschen funktionieren in jedem Plan. Für eine Nachricht, die einmal zu einer festen Zeit rausgeht, verwenden Sie stattdessen send_at unter Nachricht senden.

Erinnerung erstellen#

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

Antwort (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

namestringerforderlich

Ein Name für die Erinnerung, bis zu 100 Zeichen, wie er auf der Seite Erinnerungen angezeigt wird.

toobjecterforderlich

Genau eines von phone (internationales Format mit +), group (der genaue Name einer WhatsApp-Gruppe), contact_id oder username (Telegram), wie unter Nachrichten → Empfänger.

frominteger or nullErforderlich bei einem auf einige Nummern beschränkten Schlüssel

Die id der Nummer, die sie sendet. Sie muss verbunden sein, wenn Sie sie festlegen. Weggelassen oder null: Eine beliebige verbundene Nummer des Arbeitsbereichs sendet sie.

textstringerforderlich

Die Nachricht, bis zu 3.000 Zeichen. Sie ist auch die Bildunterschrift, wenn media gesendet wird.

mediaobject or nulloptional

Ein Bild oder eine Datei, die jedes Mal gesendet wird: url oder media_id und optional type, wie unter Nachrichten → Medien.

scheduleobjecterforderlich

cron (erforderlich) und timezone. Siehe Zeitplan.

activebooleanoptional

true (Standard) führt sie aus; false erstellt sie pausiert.

Zeitplan#

schedule.cron hat fünf durch Leerzeichen getrennte Teile: Minute, Stunde, Tag des Monats, Monat, Wochentag. * bedeutet „jeder“. Es muss ein Zeitplan sein, der irgendwann ausgeführt wird (nicht der 31. Februar).

cronWird ausgeführt
0 9 * * 1Montags um 09:00
30 18 * * *Jeden Tag um 18:30
0 10 1 * *Am 1. jedes Monats um 10:00
0 9 * * 1-5Werktags um 09:00
0 8,20 * * *Jeden Tag um 08:00 und 20:00
0 9 15 1 *Am 15. Januar um 09:00, jedes Jahr

schedule.timezone ist ein IANA-Zeitzonenname wie Asia/Kolkata, Europe/London oder America/New_York (Standard UTC). Die Cron-Zeiten gelten in dieser Zone, und auch next_run_at wird darin angegeben, mit ihrem Offset. Siehe die Zeitzonen-Referenz.

Jede Ausführung sendet eine Nachricht wie jede andere: Dafür müssen im Plan noch Nachrichten übrig sein, und sie erscheint unter Nachrichten auflisten.

Fehler beim Erstellen#

HTTPCodeWann
400validation_failedEin Pflichtfeld fehlt oder ist leer, ein Feld ist unbekannt oder zu lang (name, to.group), oder media ist ungültig
400text_requiredtext ist leer
400text_too_longtext hat mehr als 3.000 Zeichen
400invalid_cronschedule.cron hat nicht 5 Teile oder wird nie ausgeführt
400invalid_timezoneschedule.timezone ist keine IANA-Zeitzone
403plan_requiredDer Plan enthält keine Erinnerungen
403number_not_allowedDer Schlüssel ist auf einige Nummern beschränkt, und from gehört nicht dazu oder fehlt
422invalid_phoneto.phone ist keine gültige Nummer im internationalen Format mit +
422invalid_usernameto.username ist kein Telegram-Benutzername, kein Link und keine tg:-ID
422username_needs_telegramEin Telegram-Benutzername, aber from ist kein Telegram-Konto (oder, ohne from, ist kein Telegram-Konto verbunden)
422contact_not_foundKein Kontakt mit dieser to.contact_id
422media_not_foundKeine Datei mit dieser media.media_id
422invalid_media_urlmedia.url ist kein öffentlicher http(s)-Link
422number_not_connectedfrom ist keine verbundene Nummer dieses Arbeitsbereichs

Erinnerungen auflisten#

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

Die Erinnerungen des Arbeitsbereichs, die neueste zuerst, in Seiten (limit 1 bis 100, Standard 25, und cursor). Pausierte sind enthalten, mit "active": false. Ein auf einige Nummern beschränkter Schlüssel sieht nur die Erinnerungen, die von diesen Nummern senden.

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

Die Antwort ist {"data": [Reminder, …], "next_cursor": "…" or null}.

Eine Erinnerung abrufen#

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

Eine Erinnerung, die nicht existiert, gelöscht wurde oder von einer Nummer sendet, die der Schlüssel nicht nutzen darf, antwortet mit 404 reminder_not_found.

Erinnerung ändern, pausieren oder fortsetzen#

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

Body: JSON (application/json)

Senden Sie nur die Felder, die sich ändern; die anderen behalten ihre Werte. Die Felder sind die von Erinnerung erstellen. Die Antwort ist 200 mit der Erinnerung in ihrem aktuellen Zustand.

  • Pausieren: {"active": false}. Sie wird nicht mehr ausgeführt, und next_run_at wird null. Pausieren funktioniert in jedem Plan.
  • Fortsetzen: {"active": true}. Sie läuft ab ihrem nächsten Termin wieder. Zum Fortsetzen ist ein Plan mit Erinnerungen nötig.
  • schedule wird als Ganzes ersetzt: Senden Sie cron mit. Ohne timezone behält die Erinnerung ihre aktuelle Zeitzone.
# 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."}'

Eine Änderung antwortet mit denselben Fehlern wie das Erstellen sowie mit 404 reminder_not_found. Ist ein Feld falsch, wird nichts geändert.

Erinnerung löschen#

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

Löscht die Erinnerung: Sie wird nie wieder ausgeführt. Bereits gesendete Nachrichten bleiben im Verlauf. Um sie stattdessen eine Zeit lang anzuhalten, pausieren Sie sie.

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

Das Reminder-Objekt#

FeldTypBeschreibung
idintegerDie ID der Erinnerung.
namestringIhr Name.
activebooleantrue, solange sie läuft, false, solange sie pausiert ist.
toobjectDer Empfänger: phone (mit +), group oder username. Eine mit contact_id erstellte Erinnerung zeigt die Nummer oder Gruppe des Kontakts.
frominteger or nullDie id der sendenden Nummer oder null für eine beliebige verbundene Nummer.
textstringDie Nachricht.
mediaobject or nulltype (image oder file), url und file_name.
scheduleobjectcron und timezone.
next_run_atstring or nullWann sie als Nächstes ausgeführt wird, in ihrer Zeitzone mit Offset, zum Beispiel 2026-10-19T09:00:00+05:30. null, solange sie pausiert ist.
created_atstringWann sie erstellt wurde (UTC).

Verwandte Themen#