Reminders
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
The Reminders API takes a significant leap forward with v3, enabling developers to attach time-based alerts to specific messages across any chat type - direct messages, group chats, or channels. With support for multi-participant assignment and flexible recurrence, it is well suited for building notification-driven and accountability-focused workflows.
Key Capabilities
- Get Reminders: Retrieve all reminders associated with messages in a chat, spanning direct messages, group chats, and channels in a single query.
- Update Status: Resolve a recurring reminder by marking it as completed across all its occurrences simultaneously.
- Trigger Notification: Proactively push an immediate alert to all assignees of a reminder, without waiting for the scheduled trigger. Available exclusively for reminders assigned to other users.
- Batch Edit: Reschedule multiple reminders in one operation by supplying reminder IDs alongside their updated epoch timestamps.
Reminder Types
| Type | Description |
|---|---|
| One-time | Fires once at the specified time. Use batch edit to reschedule. |
| Recurring | Repeats on a defined schedule. Supports apply_to: all_occurrences for status updates. |
Base URL Note
- GET Reminders:
https://cliq.zoho.com/v3(without/api) - All other Reminders APIs:
https://cliq.zoho.com/api/v3
Get reminders in a chat
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Retrieves all reminders set on messages within a specific chat. Use this to list all active reminder alerts across direct messages, group chats, and channels, including single-user and multi-user assigned reminders.
Threshold limit: 20 requests per min per user
Number of API calls allowed within a minute.
Lock period: 10 minutes
Wait time before consecutive API requests.
Note: This endpoint uses a different base URL:
https://cliq.zoho.com/v3 (without /api).! Possible Error Codes Click to expand
| Error Code | Description |
|---|---|
| param_missing | A required parameter is missing. The limit query parameter must be provided. |
OAuth Scope : ZohoCliq.Reminders.READ
Path Parameters
Query Parameters
Maximum limit: 100
headers_data = Map();
headers_data.put("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
response = invokeUrl
[
url: "https://cliq.zoho.com/v3/chats/CHAT_ID/reminders?limit=SOME_INTEGER_VALUE"
type: GET
headers: headers_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://cliq.zoho.com/v3/chats/CHAT_ID/reminders?limit=SOME_INTEGER_VALUE")
.get()
.addHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f")
.build();
Response response = client.newCall(request).execute();
const options = {
method: 'GET',
headers: {
Authorization: 'Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'
}
};
fetch('https://cliq.zoho.com/v3/chats/CHAT_ID/reminders?limit=SOME_INTEGER_VALUE', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("cliq.zoho.com")
headers = { 'Authorization': "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" }
conn.request("GET", "/v3/chats/CHAT_ID/reminders?limit=SOME_INTEGER_VALUE", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "GET",
"hostname": "cliq.zoho.com",
"port": null,
"path": "/v3/chats/CHAT_ID/reminders?limit=SOME_INTEGER_VALUE",
"headers": {
"Authorization": "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
var client = new RestClient("https://cliq.zoho.com/v3/chats/CHAT_ID/reminders?limit=SOME_INTEGER_VALUE");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://cliq.zoho.com/v3/chats/CHAT_ID/reminders?limit=SOME_INTEGER_VALUE"),
Headers =
{
{ "Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://cliq.zoho.com/v3/chats/CHAT_ID/reminders?limit=SOME_INTEGER_VALUE"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = null;
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://cliq.zoho.com/v3/chats/CHAT_ID/reminders?limit=SOME_INTEGER_VALUE");
xhr.setRequestHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
xhr.send(data);
curl --request GET \
--url 'https://cliq.zoho.com/v3/chats/CHAT_ID/reminders?limit=SOME_INTEGER_VALUE' \
--header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'
{
"category": "chat",
"time": "2026-05-29T03:57:43-07:00",
"list": [
{
"id": "1901318000012651019",
"time": "2026-05-31T19:30:00-07:00",
"timezone": "Asia/Kolkata",
"content": "Weekly Finance Sync",
"completed": false,
"creation_time": "2026-05-29T04:05:57-07:00",
"creator": {
"name": "Priya",
"id": "697322516"
},
"users": [
{
"name": "Priya",
"id": "697322516",
"completed": false,
"deleted": false
}
],
"message": {
"msgid": "1780052699342",
"msg": "Weekly Finance Sync: Review all pending expense approvals and flag any claims older than 7 days for escalation. Ensure the expense tracker is updated before the sync.",
"chat_id": "CT_1424569695482328362_631836344",
"sender_id": "697322516",
"dname": "Priya"
}
},
{
"id": "1901318000012651010",
"time": "2026-06-09T21:30:00-07:00",
"timezone": "Asia/Kolkata",
"content": "Vendor Payment Review",
"completed": false,
"creation_time": "2026-05-29T03:51:46-07:00",
"creator": {
"name": "Priya",
"id": "697322516"
},
"users": [
{
"name": "Priya",
"id": "697322516",
"completed": false,
"deleted": false
}
],
"message": {
"msgid": "1780051880491",
"msg": "Vendor Payment Review: Review and approve all pending vendor payment requests before the monthly finance sync on June 6.",
"chat_id": "CT_1424569695482328362_631836344",
"sender_id": "697322516",
"dname": "Priya"
}
}
]
}
{
"category": "chat",
"time": "2026-05-29T03:57:43-07:00",
"list": [
{
"id": "1901318000012651028",
"time": "2026-06-15T04:30:00-07:00",
"timezone": "Asia/Kolkata",
"content": "Action Item followup reminder",
"completed": false,
"creation_time": "2026-05-29T04:08:17-07:00",
"creator": {
"name": "Priya",
"id": "697322516"
},
"users": [
{
"name": "Scott",
"id": "631830848",
"completed": false,
"deleted": false
},
{
"name": "Olivia Palmer",
"id": "631830846",
"completed": false,
"deleted": false
}
],
"message": {
"msgid": "1780051988899",
"msg": "Action Item Follow-up: Check the status of all open action items from last week's sprint review. Update the tracker and post a summary in this channel before EOD.",
"chat_id": "1608865438186287622",
"sender_id": "697322516",
"dname": "Priya"
}
}
]
}
{
"category": "chat",
"time": "2026-05-29T03:57:42-07:00",
"list": []
}
{
"message": "The request cannot be performed. Usually because of malformed parameter or missing parameter."
}
{
"message": "Request was rejected because of invalid AuthToken."
}
{
"message": "The user does not have enough permission or possibly not an user of the respective organization to access the resource."
}
{
"message": "Too many requests within a certain time frame."
}
{
"message": "Cliq server encountered an error which prevents it from fulfilling the request."
}
Update reminder status
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Marks a recurring reminder as completed across all occurrences. Use this to close out a recurring reminder entirely once the associated task or event no longer requires follow-up.
Threshold limit: 20 requests per min per user
Number of API calls allowed within a minute.
Lock period: 10 minutes
Wait time before consecutive API requests.
Note:
apply_to: all_occurrences is applicable only for recurring reminders. For one-time reminders, use batch edit to reschedule instead.! Possible Error Codes Click to expand
| Error Code | Description |
|---|---|
| reminder_missing_apply_to | The apply_to field is required. Supported value: all_occurrences. |
| reminder_not_recurring | apply_to: all_occurrences is only applicable for recurring reminders. |
OAuth Scope : ZohoCliq.Reminders.UPDATE
Arguments
Allowed values:
completed: Marks the reminder as done. When used withapply_to: all_occurrences, marks all occurrences of a recurring reminder as completed.
Allowed values:
all_occurrences: Applies the status update across every occurrence of a recurring reminder. Not applicable for one-time reminders.
Path Parameters
To retrieve this ID, use the Get reminders in a chat endpoint or the List all reminders (v2).
parameters_data='{"field1":"value1","field2":"value2"}';
headers_data = Map();
headers_data.put("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
response = invokeUrl
[
url: "https://cliq.zoho.com/api/v3/reminders/REMINDER_ID"
type: PUT
headers: headers_data
content-type: application/json
parameters: parameters_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"field1\":\"value1\",\"field2\":\"value2\"}");
Request request = new Request.Builder()
.url("https://cliq.zoho.com/api/v3/reminders/REMINDER_ID")
.put(body)
.addHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
const options = {
method: 'PUT',
headers: {
Authorization: 'Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f',
'content-type': 'application/json'
},
body: '{"field1":"value1","field2":"value2"}'
};
fetch('https://cliq.zoho.com/api/v3/reminders/REMINDER_ID', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("cliq.zoho.com")
payload = "{\"field1\":\"value1\",\"field2\":\"value2\"}"
headers = {
'Authorization': "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f",
'content-type': "application/json"
}
conn.request("PUT", "/api/v3/reminders/REMINDER_ID", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "PUT",
"hostname": "cliq.zoho.com",
"port": null,
"path": "/api/v3/reminders/REMINDER_ID",
"headers": {
"Authorization": "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f",
"content-type": "application/json"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({field1: 'value1', field2: 'value2'}));
req.end();
var client = new RestClient("https://cliq.zoho.com/api/v3/reminders/REMINDER_ID");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"field1\":\"value1\",\"field2\":\"value2\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Put,
RequestUri = new Uri("https://cliq.zoho.com/api/v3/reminders/REMINDER_ID"),
Headers =
{
{ "Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" },
},
Content = new StringContent("{\"field1\":\"value1\",\"field2\":\"value2\"}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://cliq.zoho.com/api/v3/reminders/REMINDER_ID"
payload := strings.NewReader("{\"field1\":\"value1\",\"field2\":\"value2\"}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = JSON.stringify({
"field1": "value1",
"field2": "value2"
});
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("PUT", "https://cliq.zoho.com/api/v3/reminders/REMINDER_ID");
xhr.setRequestHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
curl --request PUT \
--url https://cliq.zoho.com/api/v3/reminders/REMINDER_ID \
--header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \
--header 'content-type: application/json' \
--data '{"field1":"value1","field2":"value2"}'
{
"status": "completed",
"apply_to": "all_occurrences"
}
{
"Response Code": "204 No response"
}
{
"message": "The request cannot be performed. Usually because of malformed parameter or missing parameter."
}
{
"message": "Request was rejected because of invalid AuthToken."
}
{
"message": "The user does not have enough permission or possibly not an user of the respective organization to access the resource."
}
{
"message": "Too many requests within a certain time frame."
}
{
"message": "Cliq server encountered an error which prevents it from fulfilling the request."
}
Trigger reminder notification to assignees
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Immediately notifies all assignees of a reminder, bypassing the scheduled time. Use this to push a reminder notification to all assigned users on demand, without waiting for the reminder to fire automatically. Supported only for reminders assigned to other users.
Threshold limit: 20 requests per min per user
Number of API calls allowed within a minute.
Lock period: 10 minutes
Wait time before consecutive API requests.
! Possible Error Codes Click to expand
| Error Code | Description |
|---|---|
| remind_self_not_allowed | Notification trigger is not applicable for self-assigned reminders. |
OAuth Scope : ZohoCliq.Reminders.CREATE
Path Parameters
To retrieve this ID, use the Get reminders in a chat endpoint or the List all reminders (v2).
headers_data = Map();
headers_data.put("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
response = invokeUrl
[
url: "https://cliq.zoho.com/api/v3/reminders/REMINDER_ID/notifications"
type: POST
headers: headers_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://cliq.zoho.com/api/v3/reminders/REMINDER_ID/notifications")
.post(null)
.addHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f")
.build();
Response response = client.newCall(request).execute();
const options = {
method: 'POST',
headers: {
Authorization: 'Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'
}
};
fetch('https://cliq.zoho.com/api/v3/reminders/REMINDER_ID/notifications', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("cliq.zoho.com")
headers = { 'Authorization': "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" }
conn.request("POST", "/api/v3/reminders/REMINDER_ID/notifications", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "POST",
"hostname": "cliq.zoho.com",
"port": null,
"path": "/api/v3/reminders/REMINDER_ID/notifications",
"headers": {
"Authorization": "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
var client = new RestClient("https://cliq.zoho.com/api/v3/reminders/REMINDER_ID/notifications");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://cliq.zoho.com/api/v3/reminders/REMINDER_ID/notifications"),
Headers =
{
{ "Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://cliq.zoho.com/api/v3/reminders/REMINDER_ID/notifications"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = null;
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://cliq.zoho.com/api/v3/reminders/REMINDER_ID/notifications");
xhr.setRequestHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
xhr.send(data);
curl --request POST \
--url https://cliq.zoho.com/api/v3/reminders/REMINDER_ID/notifications \
--header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'
{
"data": [
{
"name": "Scott",
"id": "631830848",
"completed": false,
"deleted": false
},
{
"name": "Olivia Palmer",
"id": "631830846",
"completed": false,
"deleted": false
}
]
}
{
"message": "The request cannot be performed. Usually because of malformed parameter or missing parameter."
}
{
"message": "Request was rejected because of invalid AuthToken."
}
{
"message": "The user does not have enough permission or possibly not an user of the respective organization to access the resource."
}
{
"message": "Too many requests within a certain time frame."
}
{
"message": "Cliq server encountered an error which prevents it from fulfilling the request."
}
Batch edit reminders
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Reschedules multiple reminders in a single request. Use this to update the delivery time of several reminders at once, avoiding the need to make individual edit calls for each one.
Threshold limit: 20 requests per min per user
Number of API calls allowed within a minute.
Lock period: 10 minutes
Wait time before consecutive API requests.
Note: Use
reminder_id (not id) as the key for each reminder object. Timezone is not a supported field in the request body, convert to epoch milliseconds in the desired timezone before sending.
Response status values
The top-level
status field reflects the overall result of the batch operation across all submitted reminders.success: All reminders in the batch were rescheduled successfully.partial: One or more reminders failed while the rest succeeded. Check the individualstatusfield inside each object in thedataarray to identify which ones failed.failure: All reminders in the batch failed to reschedule.
data array carries its own status and reminder_id, allowing you to handle successes and failures per reminder regardless of the overall batch outcome.! Possible Error Codes Click to expand
| Error Code | Description |
|---|---|
| param_missing | A required parameter is missing. Ensure reminder_id and time are provided for each reminder object. |
| extra_key_found | An unsupported key was included in the request body. For example, timezone is not accepted. |
OAuth Scope : ZohoCliq.Reminders.UPDATE
Arguments
Maximum items: 25 per request.
parameters_data='{"field1":"value1","field2":"value2"}';
headers_data = Map();
headers_data.put("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
response = invokeUrl
[
url: "https://cliq.zoho.com/api/v3/reminders/edits"
type: PUT
headers: headers_data
content-type: application/json
parameters: parameters_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"field1\":\"value1\",\"field2\":\"value2\"}");
Request request = new Request.Builder()
.url("https://cliq.zoho.com/api/v3/reminders/edits")
.put(body)
.addHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
const options = {
method: 'PUT',
headers: {
Authorization: 'Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f',
'content-type': 'application/json'
},
body: '{"field1":"value1","field2":"value2"}'
};
fetch('https://cliq.zoho.com/api/v3/reminders/edits', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("cliq.zoho.com")
payload = "{\"field1\":\"value1\",\"field2\":\"value2\"}"
headers = {
'Authorization': "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f",
'content-type': "application/json"
}
conn.request("PUT", "/api/v3/reminders/edits", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "PUT",
"hostname": "cliq.zoho.com",
"port": null,
"path": "/api/v3/reminders/edits",
"headers": {
"Authorization": "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f",
"content-type": "application/json"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({field1: 'value1', field2: 'value2'}));
req.end();
var client = new RestClient("https://cliq.zoho.com/api/v3/reminders/edits");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"field1\":\"value1\",\"field2\":\"value2\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Put,
RequestUri = new Uri("https://cliq.zoho.com/api/v3/reminders/edits"),
Headers =
{
{ "Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" },
},
Content = new StringContent("{\"field1\":\"value1\",\"field2\":\"value2\"}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://cliq.zoho.com/api/v3/reminders/edits"
payload := strings.NewReader("{\"field1\":\"value1\",\"field2\":\"value2\"}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = JSON.stringify({
"field1": "value1",
"field2": "value2"
});
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("PUT", "https://cliq.zoho.com/api/v3/reminders/edits");
xhr.setRequestHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
curl --request PUT \
--url https://cliq.zoho.com/api/v3/reminders/edits \
--header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \
--header 'content-type: application/json' \
--data '{"field1":"value1","field2":"value2"}'
{
"reminders": [
{
"reminder_id": "1901318000012651019",
"time": 1749369000000
}
]
}
{
"reminders": [
{
"reminder_id": "1901318000012651010",
"time": 1749282600000
},
{
"reminder_id": "1901318000012651016",
"time": 1748930400000
}
]
}
{
"status": "success",
"data": [
{
"status": "success",
"reminder_id": "1901318000012651010",
"data": {
"id": "1901318000012651010",
"time": "2026-06-09T21:30:00-07:00",
"timezone": "Asia/Kolkata",
"content": "Vendor Payment Review",
"completed": false,
"creation_time": "2026-05-29T03:51:46-07:00",
"creator": {
"name": "Priya",
"id": "697322516"
},
"users": [
{
"name": "Priya",
"id": "697322516",
"completed": false,
"deleted": false
}
],
"message": {
"msgid": "1780051880491",
"msg": "Vendor Payment Review: Review and approve all pending vendor payment requests before the monthly finance sync on June 6.",
"chat_id": "CT_1424569695482328362_631836344",
"sender_id": "697322516",
"dname": "Priya"
}
}
},
{
"status": "success",
"reminder_id": "1901318000012651016",
"data": {
"id": "1901318000012651016",
"time": "2026-06-04T20:30:00-07:00",
"timezone": "Asia/Kolkata",
"completed": false,
"creation_time": "2026-05-29T03:53:32-07:00",
"creator": {
"name": "Priya",
"id": "697322516"
},
"users": [
{
"name": "Priya",
"id": "697322516",
"completed": false,
"deleted": false
}
],
"message": {
"msgid": "1780051988899",
"msg": "Sprint Review Prep: All team members to update their task status in the project tracker before the sprint review on June 4.",
"chat_id": "1608865438186287622",
"sender_id": "697322516",
"dname": "Priya"
}
}
}
]
}
{
"message": "The request cannot be performed. Usually because of malformed parameter or missing parameter."
}
{
"message": "Request was rejected because of invalid AuthToken."
}
{
"message": "The user does not have enough permission or possibly not an user of the respective organization to access the resource."
}
{
"message": "Too many requests within a certain time frame."
}
{
"message": "Cliq server encountered an error which prevents it from fulfilling the request."
}