Reminders API
Cancel reminder API
Stop a recurring reminder so it never runs again. Use it when a customer pays, a subscription ends or an automation is no longer needed.
https://wbiztool.com/api/v1/reminder/cancel/Body: JSON or form fields
You need the reminder_id returned by Create reminder. If you don't have it, find it with List reminders.
Quick example#
curl -X POST https://wbiztool.com/api/v1/reminder/cancel/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"reminder_id": "3187"
}'import requests
reminder_id = 3187
response = requests.post(
"https://wbiztool.com/api/v1/reminder/cancel/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"reminder_id": str(reminder_id), # must be a string in JSON
},
timeout=60,
)
try:
result = response.json() # read the body even when the HTTP code is 400 or 404
except ValueError:
raise SystemExit(f"HTTP {response.status_code}: not JSON. Check that your api_key exists.")
if result["status"] == 1:
print("Reminder cancelled")
else:
print("Failed:", result["message"])// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const reminderId = 3187;
const response = await fetch("https://wbiztool.com/api/v1/reminder/cancel/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
client_id: 12345,
api_key: "YOUR_API_KEY",
reminder_id: String(reminderId), // must be a string in JSON
}),
});
// Read the body even when the HTTP code is 400 or 404. A non-JSON reply means the request crashed.
const text = await response.text();
let result;
try {
result = JSON.parse(text);
} catch {
throw new Error(`HTTP ${response.status}: not JSON. Check your api_key and send reminder_id as a string.`);
}
if (result.status === 1) {
console.log("Reminder cancelled");
} else {
console.error("Failed:", result.message);
}<?php
$payload = [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'reminder_id' => (string) 3187, // must be a string in JSON
];
$ch = curl_init('https://wbiztool.com/api/v1/reminder/cancel/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
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 your api_key and send reminder_id as a string.";
} elseif ($result['status'] === 1) {
echo 'Reminder cancelled';
} else {
echo 'Failed: ' . $result['message'];
}Replace 12345 and YOUR_API_KEY with your own values. See Authentication for where to find them.
Request parameters#
client_idintegerrequiredYour API Client ID from Settings → API keys.
api_keystringrequiredYour API key from the same page.
reminder_idstringrequiredID of the reminder to cancel, as returned by Create reminder or List reminders. It must belong to the same workspace as the API key.
Sending form fields avoids the issue, because every form value is a string:
curl -X POST https://wbiztool.com/api/v1/reminder/cancel/ \
-d client_id=12345 \
-d api_key=YOUR_API_KEY \
-d reminder_id=3187
Response#
A successful request returns HTTP 200:
{
"message": "Reminder cancelled successfully",
"status": 1
}
| Field | Type | Description |
|---|---|---|
status | integer | 1 if the reminder was cancelled, 0 if the request failed. |
message | string | Reminder cancelled successfully, otherwise the error. |
Errors#
Errors return HTTP 400 with status set to 0, unless noted:
{ "status": 0, "message": "Reminder not found" }
| Message | How to fix it |
|---|---|
Invalid JSON format: … | The JSON body isn't valid. You also get this for a form request without client_id, or for any GET request. |
Reminder ID cannot be null | Add reminder_id. |
Auth Error - Please send correct API key and Client id | Send both client_id and api_key. |
Invalid client id | Send client_id as a number. |
Invalid reminder id | reminder_id must be a whole number, such as 3187. |
Auth Error: invalid api key | The key belongs to a different client_id. |
Auth Error: please check client id | The key isn't linked to a workspace. Create a new key in the workspace you want to use. |
Demo Account cannot access APIs | Use a regular account. |
Upgrade your plan to use reminders feature | Your plan doesn't include reminders. Reminders created earlier keep running and using credits, and they can't be cancelled or paused, through the API or the dashboard, until you upgrade. |
Reminder not found (HTTP 404) | The ID doesn't exist, is in another workspace, or the reminder was already cancelled. |
Error cancelling reminder: … (HTTP 500) | Something went wrong on our side. Try again. |
If the api_key doesn't exist or has been deleted, the response is an HTML error page with HTTP 500 instead of JSON. Test your key with Check credentials.
What cancelling does#
- The reminder stops immediately and won't run again. Paused reminders can be cancelled too.
- It disappears from List reminders and the Reminders page.
- A cancelled reminder can't be restored. To start again, create a new reminder.
- A message the reminder already queued before you cancelled it is not removed and may still be sent.
Tips#
- Cancelling twice returns
Reminder not found. If you retry requests, treat that message as "already cancelled". - Pausing isn't available through the API. To stop a reminder temporarily, pause it on the Reminders page instead.
- Changing a schedule: there's no update API. Cancel the reminder and create a new one with the new
cron_expression.
