Scheduled Messages

Scheduled Messages 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

Scheduled messages are automatically sent to conversations at preferred times or based on user statuses such as available, checked in, or after a call ends. Use these APIs to create, update, and retrieve scheduled messages.

Download Scheduled Messages OpenAPI Document
End Points

Send a scheduled message 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

Use this API to schedule a message for delivery at a future date and time. Threshold limit: 50 requests per minute per user. Lock period: 10 minutes.
OAuth Scope : ZohoCliq.messages.CREATE

Arguments

text
string
(Required)
The text to be sent as a scheduled message.
schedule_time
string
The scheduled execution time of the message.

Used in: Schedule with specific time
Allowed format: yyyyMMddTHHmmss
  • yyyyMMdd - 2025-02-11 (Year:2025, Month:02, Day:11)
  • T - Separator indicating the start of the time component
  • HHmmss - 09:00:00 (Hour:09, Minute:00, Second:00)
schedule_status
string
The user status that triggers the message to be sent.

Used in: Schedule with user status
The message will be sent when the user status matches the provided value.
Allowed values:
  • check_in - Message will be sent when the user checks in to work.
  • user_available - Message will be sent when the user becomes available.
  • call_end - Message will be sent when a call involving the user ends.
  • check_out - Message will be sent when the user checks out from work.
schedule_timezone
string
Timezone of the scheduled time.

Used in: Schedule with specific time
Eg: Asia/Kolkata

Path Parameters

CHAT_ID
string
(Required)
The ID of the chat in which the message needs to be scheduled To learn how to retrieve this ID, see CHAT_ID in the Glossary page.

Request Example

Click to copy
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/v2/chats/987000000654321/scheduledmessages" type: POST 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/v2/chats/987000000654321/scheduledmessages") .post(body) .addHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute();
const options = { method: 'POST', headers: { Authorization: 'Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f', 'content-type': 'application/json' }, body: '{"field1":"value1","field2":"value2"}' }; fetch('https://cliq.zoho.com/api/v2/chats/987000000654321/scheduledmessages', 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("POST", "/api/v2/chats/987000000654321/scheduledmessages", payload, 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/v2/chats/987000000654321/scheduledmessages", "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/v2/chats/987000000654321/scheduledmessages"); var request = new RestRequest(Method.POST); 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.Post, RequestUri = new Uri("https://cliq.zoho.com/api/v2/chats/987000000654321/scheduledmessages"), 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/v2/chats/987000000654321/scheduledmessages" payload := strings.NewReader("{\"field1\":\"value1\",\"field2\":\"value2\"}") req, _ := http.NewRequest("POST", 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("POST", "https://cliq.zoho.com/api/v2/chats/987000000654321/scheduledmessages"); xhr.setRequestHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); xhr.setRequestHeader("content-type", "application/json"); xhr.send(data);
curl --request POST \ --url https://cliq.zoho.com/api/v2/chats/987000000654321/scheduledmessages \ --header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'content-type: application/json' \ --data '{"field1":"value1","field2":"value2"}'

Body Parameters

Click to copy
{ "text": "Hello Ryan! Please provide an update on last month's sales!", "schedule_time": "20250211T090000", "schedule_timezone": "America/New_York" }
{ "text": "Hello Ryan! Please provide an update on last month's sales!", "schedule_status": "user_available" }

Response Example

{ "id": "55741379-fddf-476c-8093-c3e05bdf9006", "creator": "697322516", "created_time": 1739182862958, "timezone": "Asia/Kolkata", "time": 1739254500000, "message": { "msg": "Hello Ryan! Please provide an update on last month's sales!", "sender": "697322516" } }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }

Get the list of scheduled messages 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

Use this API to retrieve the list of all scheduled messages. Threshold limit: 20 requests per minute per user. Lock period: 10 minutes.
OAuth Scope : ZohoCliq.messages.READ

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://cliq.zoho.com/api/v2/scheduledmessages" type: GET headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://cliq.zoho.com/api/v2/scheduledmessages") .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/api/v2/scheduledmessages', 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", "/api/v2/scheduledmessages", 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": "/api/v2/scheduledmessages", "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/v2/scheduledmessages"); 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/api/v2/scheduledmessages"), 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/v2/scheduledmessages" 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/api/v2/scheduledmessages"); xhr.setRequestHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); xhr.send(data);
curl --request GET \ --url https://cliq.zoho.com/api/v2/scheduledmessages \ --header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "url": "/v2/chats/2684315214835428158/scheduledmessages", "next_token": "es_cXsdfasdeiwlal", "type": "scheduledmessages", "data": [ { "chat_id": "CT_2684315214835428158_697322516", "creator": "697322516", "created_time": 1740456316369, "scheduled_time": 1740556970477, "id": 4000000131002 } ] }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }

Update a scheduled message 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

Use this API to update the content or scheduled time of an existing scheduled message. Threshold limit: 20 requests per minute per user. Lock period: 10 minutes.
OAuth Scope : ZohoCliq.messages.UPDATE

Arguments

text
string
(Required)
The text to be sent as a scheduled message.
schedule_time
string
The scheduled execution time of the message.

Used in: Schedule with specific time
Allowed format: yyyyMMddTHHmmss
  • yyyyMMdd - 2025-02-11 (Year:2025, Month:02, Day:11)
  • T - Separator indicating the start of the time component
  • HHmmss - 09:00:00 (Hour:09, Minute:00, Second:00)
schedule_status
string
The user status that triggers the message to be sent.

Used in: Schedule with user status
The message will be sent when the user status matches the provided value.
Allowed values:
  • check_in - Message will be sent when the user checks in to work.
  • user_available - Message will be sent when the user becomes available.
  • call_end - Message will be sent when a call involving the user ends.
  • check_out - Message will be sent when the user checks out from work.
schedule_timezone
string
Timezone of the scheduled time.

Used in: Schedule with specific time
Eg: Asia/Kolkata

Path Parameters

CHAT_ID
string
(Required)
The ID of the chat in which the message is scheduled To learn how to retrieve this ID, see CHAT_ID in the Glossary page.
SCHEDULED_MESSAGE_ID
string
(Required)
Unique identifier of the scheduled message To learn how to retrieve this ID, see SCHEDULED_MESSAGE_ID in the Glossary page.

Request Example

Click to copy
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/v2/chats/987000000654321/scheduledmessages/987000000654321" 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/v2/chats/987000000654321/scheduledmessages/987000000654321") .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/v2/chats/987000000654321/scheduledmessages/987000000654321', 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/v2/chats/987000000654321/scheduledmessages/987000000654321", 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/v2/chats/987000000654321/scheduledmessages/987000000654321", "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/v2/chats/987000000654321/scheduledmessages/987000000654321"); 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/v2/chats/987000000654321/scheduledmessages/987000000654321"), 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/v2/chats/987000000654321/scheduledmessages/987000000654321" 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/v2/chats/987000000654321/scheduledmessages/987000000654321"); 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/v2/chats/987000000654321/scheduledmessages/987000000654321 \ --header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'content-type: application/json' \ --data '{"field1":"value1","field2":"value2"}'

Body Parameters

Click to copy
{ "text": "Hello Ryan! Please provide an update on last month's sales!", "schedule_time": "20250211T090000", "schedule_status": "user_available", "schedule_timezone": "Asia/Kolkata" }

Response Example

{ "id": "55741379-fddf-476c-8093-c3e05bdf9006", "creator": "697322516", "created_time": 1739182862958, "timezone": "Asia/Kolkata", "time": 1739254500000, "message": { "msg": "Hello Ryan! Please provide an update on last month's sales!", "sender": "697322516" } }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }
{ "message": "The request cannot be performed. Usually because of malformed parameter or missing parameter." }