Slash Commands

Slash Commands 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

Slash Commands are custom commands that users invoke directly from the Zoho Cliq message compose bar by typing a forward slash followed by the command name (e.g. /report, /deploy, /leave). They allow users to trigger automation, fetch data, or initiate workflows without leaving the conversation.

For more information, refer to the Slash Commands Help Documentation.

Command Handlers

Command handlers define the logic that runs when a user invokes a slash command. Each command supports up to two handler types:

Handler Description
execution_handler Runs when the user submits the command. Processes the input, performs actions (API calls, data lookups, message posts), and returns a response rendered back in the chat.
suggestion_handler Runs as the user types the command argument to populate a real-time autocomplete dropdown with context-aware suggestions. Triggered only when the command includes a text argument field.

Command Scope

  • organization - The command is available to all users across the organization.
  • team - The command is restricted to members of specified teams.
  • personal - The command is visible only to the creator.

What can you do with the Slash Commands API?

With the Slash Commands API, you can programmatically create and manage slash commands, configure execution and suggestion handlers, retrieve command details, and manage command visibility across the organization - all without using the Cliq Developer console.

Each command has an execution_type that defines how its handlers run when invoked. The Slash Commands API supports two execution types:

Deluge Commands (default)
Handler logic is written in Deluge and runs entirely within Zoho's platform. No external server is required.

  • If execution_type is not specified during command creation, it defaults to deluge.
  • Handler logic is defined using the script field (Deluge source code) when creating or updating handlers.
  • Suitable for teams that want to build and manage command logic entirely within Zoho's ecosystem.

Webhook Commands
When a user invokes the command, Zoho Cliq sends an HTTP POST request to the execution_url you configure. Your server processes the event and returns a response that Cliq renders back in the chat.

  • To create a Webhook command, set execution_type to webhook and provide the execution_url.
  • Handler permissions (attachments, chat, location, user) control which data attributes are included in the webhook payload. Not all permissions apply to every handler type - refer to the permissions table in the Create a handler endpoint.
  • Ideal for commands that need to integrate with external APIs, databases, or custom backend services.

Download Slash Commands OpenAPI Document

Create a slash command 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

Create a new slash command. Commands are invoked by users from the message compose bar by typing a forward slash followed by the command name (e.g. /report).

Slash Commands support two execution types:

  • Deluge (default): Handler logic runs on Zoho's platform via Deluge scripts. No external server needed. Best for Zoho-native integrations.
  • Webhook: When the command is invoked, Cliq sends a POST request to your execution_url. Your server processes the event and returns the response. Best for commands that need to reach external APIs or custom backends.

Pass execution_type: "webhook" and a valid execution_url to create a Webhook command. If execution_type is omitted, it defaults to deluge.


Threshold limit: 10 requests per min per user
Maximum API calls allowed within one minute.

Lock period: 5 minutes
Cooldown period applied after threshold exhaustion.


Possible Error Codes

Error Code Description
Security validation error The name field is required.
Security validation error The hint field is required.
Security validation error The scope field is required.
Security validation error The name must not exceed 30 characters.
Security validation error The hint must not exceed 128 characters.
Security validation error The description must not exceed 300 characters.
Security validation error A command cannot have more than 5 options.
Security validation error Each option value must not exceed 100 characters.
command_name_already_exists A command with this name already exists.
command_creation_limit_exceeded The maximum number of slash commands allowed has been reached.
command_not_valid The provided command data is invalid or malformed.

Error Response Format

When an error occurs, the API returns a JSON response in this format:

{"message": "A human-readable description of the error.", "code": "error_code"}

where code is the error identifier (as listed in the table above) and message is a human-readable explanation of what went wrong.


OAuth Scope : ZohoCliq.Commands.CREATE

Arguments

execution_type
string
Defines how the command executes its handlers.
  • deluge: Handler logic runs on Zoho's platform via Deluge scripts. Default when omitted.
  • webhook: Handler events are forwarded to your execution_url as POST requests.
execution_url
string
The URL that Zoho Cliq will POST handler events to when the command is invoked.
Required when execution_type is webhook.
Maximum length: 225 characters.
name
string
(Required)
Name of the slash command. This is the text that users will type after the "/" to invoke the command. Must be unique within the command's scope.
Maximum length: 30 characters
Allowed characters: Only lowercase letters.
hint
string
(Required)
Hint shown in the slash command picker to help users understand the command's purpose. Should be concise and descriptive.
Maximum length: 128 characters
description
string
Detailed description of the slash command's functionality. This can provide more in-depth information than the hint and may be shown in command documentation or tooltips.
Maximum length: 300 characters
options
object
Options are additional properties which can alter the output of a /command based on the user's requirements.
Maximum size: 5 key-value pairs.
  • Key: Option name - identifies the option (e.g. location, unit).
  • Value: Option description - explains what the option does (e.g. "City to check weather for").
Example syntax:
{"options": {"location": "City to check weather for", "unit": "Temperature unit: celsius or fahrenheit"}}
scope
string
(Required)
Access scope of the slash command. Determines who can see and use the command.
Allowed values:
  • organization: Command is available to all users in the organization.
  • team: Command is restricted to specific teams. Requires team_ids field.
  • personal: Command is only available to the creator.
team_ids
array
List of team_ids that are allowed to access the command when scope is set to team. Each ID corresponds to a team within the organization.
Maximum items: 4 team IDs can be specified.
This field is required if scope is team.
image
string
Base64 encoded image used as the command icon. This icon will be displayed next to the command in the slash command picker and can help users visually identify the command.
Image requirements:
  • Format: PNG or JPEG
  • Maximum size: 100 KB
  • Recommended dimensions: 64x64 pixels for optimal display
max_suggestions
integer
Maximum number of autocomplete suggestions that can be selected by the user when the command is typed.

Maximum value: 5 suggestions

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/v3/commands" 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/v3/commands") .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/v3/commands', 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/v3/commands", 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/v3/commands", "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/commands"); 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/v3/commands"), 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/commands" 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/v3/commands"); 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/v3/commands \ --header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'content-type: application/json' \ --data '{"field1":"value1","field2":"value2"}'

Body Parameters

Click to copy
{ "name": "support", "hint": "Raise a support ticket", "scope": "organization", "execution_type": "deluge", "description": "Creates a ZohoDesk ticket from the chat interface" }
{ "name": "deploy", "hint": "Trigger a deployment pipeline", "scope": "organization", "execution_type": "webhook", "execution_url": "https://api.yourcompany.com/cliq/commands/handler", "description": "Triggers a Jenkins deployment from Cliq" }

Response Example

{ "url": "/api/v3/commands", "type": "command", "data": { "name": "support", "id": "227828000000128009", "handlers": [ { "type": "execution_handler" } ], "creator": { "name": "Ryan West", "id": "119440882" }, "execution_type": "deluge", "hint": "Raise a support ticket", "status": "enabled", "type": "custom", "description": "Creates a ZohoDesk ticket from the chat interface", "scope": "organization" } }
{ "url": "/api/v3/commands", "type": "command", "data": { "name": "deploy", "id": "227828000000129001", "handlers": [ { "type": "execution_handler" } ], "creator": { "name": "Ryan West", "id": "119440882" }, "execution_type": "webhook", "execution_url": "https://api.yourcompany.com/cliq/commands/handler", "hint": "Trigger a deployment pipeline", "status": "enabled", "type": "custom", "description": "Triggers a Jenkins deployment from Cliq", "scope": "organization" } }
{ "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": "The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL." }
{ "message": "The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method." }
{ "message": "The response has been received but the requested response type is not supported by the browser." }
{ "message": "Too many requests within a certain time frame." }
{ "message": "Cliq server encountered an error which prevents it from fulfilling the request." }

List all commands 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

Retrieve a paginated list of all slash commands.

Threshold limit: 30 requests per min per user
Maximum API calls allowed within one minute.

Lock period: 5 minutes
Cooldown period applied after threshold exhaustion.


OAuth Scope : ZohoCliq.Commands.READ

Query Parameters

sync_token
string
Sync token to fetch only commands that have changed since the last request. This token is returned in the sync_token field of the API response and can be used for incremental synchronization.
limit
integer
Maximum number of commands to return in the response. This can be used to control pagination and manage response size.
next_token
string
Pagination token to retrieve the next page of results. This token is returned in the next_token field of the API response when there are more results available beyond the current page.

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://cliq.zoho.com/api/v3/commands" 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/v3/commands") .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/v3/commands', 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/v3/commands", 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/v3/commands", "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/commands"); 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/v3/commands"), 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/commands" 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/v3/commands"); xhr.setRequestHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); xhr.send(data);
curl --request GET \ --url https://cliq.zoho.com/api/v3/commands \ --header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "url": "/api/v3/commands", "type": "command", "sync_token": "MTB8MTc3NzM2MDM5OTQ5Mnw=", "data": [ { "name": "report", "id": "227828000000128011", "handlers": [ { "type": "execution_handler" } ], "creator": { "name": "Ryan West", "id": "119440882" }, "execution_type": "deluge", "hint": "Generate a sales or activity report", "status": "enabled", "type": "custom", "description": "Generates a report for the specified date range and team", "scope": "organization", "options": { "type": "Report type (e.g. sales, activity, attendance)", "period": "Date range (e.g. today, this_week, last_month)" } }, { "name": "ticket", "id": "227828000000128009", "handlers": [ { "type": "execution_handler" }, { "type": "suggestion_handler" } ], "creator": { "name": "Ryan West", "id": "119440882" }, "execution_type": "deluge", "hint": "Create or look up a support ticket", "status": "enabled", "max_suggestions": 5, "type": "custom", "description": "Creates a new support ticket or retrieves an existing one by ID", "scope": "team", "options": { "action": "Action to perform (create or lookup)", "priority": "Ticket priority (low, medium, high, critical)" } } ] }
{ "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": "The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL." }
{ "message": "The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method." }
{ "message": "The response has been received but the requested response type is not supported by the browser." }
{ "message": "Too many requests within a certain time frame." }
{ "message": "Cliq server encountered an error which prevents it from fulfilling the request." }

Update a slash command 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

Update the configuration of an existing slash command.

All fields are optional. Only the fields you provide will be updated; omitted fields remain unchanged.

For Webhook commands, you can update the execution_url independently at any time to redirect the command to a new server endpoint without recreating it.


Threshold limit: 10 requests per min per user
Maximum API calls allowed within one minute.

Lock period: 5 minutes
Cooldown period applied after threshold exhaustion.


Possible Error Codes

Error Code Description
command_not_found Command with the specified ID does not exist.
command_name_already_exists A command with this name already exists.
command_not_valid The provided command data is invalid or malformed.

Error Response Format

When an error occurs, the API returns a JSON response in this format:

{"message": "A human-readable description of the error.", "code": "error_code"}

where code is the error identifier (as listed in the table above) and message is a human-readable explanation of what went wrong.


OAuth Scope : ZohoCliq.Commands.UPDATE

Arguments

execution_url
string
Updated server URL where Cliq will forward handler events. Applicable only for Webhook commands.
This field can be updated independently to redirect the command to a new endpoint without any other changes.
Maximum length: 225 characters.
name
string
Updated name of the slash command. This is the text users type after "/" to invoke the command. Must be unique within the command's scope.
Maximum length: 30 characters
Allowed characters: lowercase letters, numbers, and underscores only. No spaces or special characters allowed.
hint
string
Updated hint shown in the slash command picker to help users understand the command's purpose. Should be concise and descriptive.
Maximum length: 128 characters
description
string
Updated detailed description of the slash command's functionality. This can provide more in-depth information than the hint and may be shown in command documentation or tooltips.
Maximum length: 300 characters
options
object
Updated options map. Options are additional properties which can alter the output of a /command based on the user's requirements.
Maximum size: 5 key-value pairs.
  • Key: Option name - identifies the option (e.g. location, unit).
  • Value: Option description - explains what the option does (e.g. "City to check weather for").
Example syntax:
{"options": {"location": "City to check weather for", "unit": "Temperature unit: celsius or fahrenheit"}}
scope
string
Updated access scope of the slash command. Determines who can see and use the command.
Allowed values:
  • organization: Command is available to all users in the organization.
  • team: Command is restricted to specific teams. Requires team_ids field.
  • personal: Command is only available to the creator.
team_ids
array
Updated list of team_ids that are allowed to access the command when scope is set to team. Each ID corresponds to a team within the organization.
Maximum items: 4 team IDs can be specified.
This field is required if scope is being changed to team.
image
string
Updated base64 encoded image used as the command icon. This icon will be displayed next to the command in the slash command picker.
Image requirements:
  • Format: PNG or JPEG
  • Maximum size: 100 KB
  • Recommended dimensions: 64x64 pixels for optimal display
max_suggestions
integer
Updated maximum number of autocomplete suggestions that can be selected by the user when the command is typed.
Maximum value: 5 suggestions

Path Parameters

SLASH_COMMAND_ID
string
(Required)
Unique numeric identifier of the slash command. To learn how to retrieve this ID, see SLASH_COMMAND_ID in the Glossary page.

Request Example

Click to copy
parameters_data='{"hint":"Send a personalized greeting - updated","description":"Sends a customizable greeting to a user or channel","scope":"organization","options":{"user":"The user to greet","msg":"Custom greeting message"},"max_suggestions":5}'; headers_data = Map(); headers_data.put("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://cliq.zoho.com/api/v3/commands/%7BSLASH_COMMAND_ID%7D" type: PATCH 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, "{\"hint\":\"Send a personalized greeting - updated\",\"description\":\"Sends a customizable greeting to a user or channel\",\"scope\":\"organization\",\"options\":{\"user\":\"The user to greet\",\"msg\":\"Custom greeting message\"},\"max_suggestions\":5}"); Request request = new Request.Builder() .url("https://cliq.zoho.com/api/v3/commands/%7BSLASH_COMMAND_ID%7D") .patch(body) .addHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute();
const options = { method: 'PATCH', headers: { Authorization: 'Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f', 'content-type': 'application/json' }, body: '{"hint":"Send a personalized greeting - updated","description":"Sends a customizable greeting to a user or channel","scope":"organization","options":{"user":"The user to greet","msg":"Custom greeting message"},"max_suggestions":5}' }; fetch('https://cliq.zoho.com/api/v3/commands/%7BSLASH_COMMAND_ID%7D', 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 = "{\"hint\":\"Send a personalized greeting - updated\",\"description\":\"Sends a customizable greeting to a user or channel\",\"scope\":\"organization\",\"options\":{\"user\":\"The user to greet\",\"msg\":\"Custom greeting message\"},\"max_suggestions\":5}" headers = { 'Authorization': "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", 'content-type': "application/json" } conn.request("PATCH", "/api/v3/commands/%7BSLASH_COMMAND_ID%7D", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "PATCH", "hostname": "cliq.zoho.com", "port": null, "path": "/api/v3/commands/%7BSLASH_COMMAND_ID%7D", "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({ hint: 'Send a personalized greeting - updated', description: 'Sends a customizable greeting to a user or channel', scope: 'organization', options: {user: 'The user to greet', msg: 'Custom greeting message'}, max_suggestions: 5 })); req.end();
var client = new RestClient("https://cliq.zoho.com/api/v3/commands/%7BSLASH_COMMAND_ID%7D"); var request = new RestRequest(Method.PATCH); request.AddHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); request.AddHeader("content-type", "application/json"); request.AddParameter("application/json", "{\"hint\":\"Send a personalized greeting - updated\",\"description\":\"Sends a customizable greeting to a user or channel\",\"scope\":\"organization\",\"options\":{\"user\":\"The user to greet\",\"msg\":\"Custom greeting message\"},\"max_suggestions\":5}", ParameterType.RequestBody); IRestResponse response = client.Execute(request);
var client = new HttpClient(); var request = new HttpRequestMessage { Method = HttpMethod.Patch, RequestUri = new Uri("https://cliq.zoho.com/api/v3/commands/%7BSLASH_COMMAND_ID%7D"), Headers = { { "Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" }, }, Content = new StringContent("{\"hint\":\"Send a personalized greeting - updated\",\"description\":\"Sends a customizable greeting to a user or channel\",\"scope\":\"organization\",\"options\":{\"user\":\"The user to greet\",\"msg\":\"Custom greeting message\"},\"max_suggestions\":5}") { 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/commands/%7BSLASH_COMMAND_ID%7D" payload := strings.NewReader("{\"hint\":\"Send a personalized greeting - updated\",\"description\":\"Sends a customizable greeting to a user or channel\",\"scope\":\"organization\",\"options\":{\"user\":\"The user to greet\",\"msg\":\"Custom greeting message\"},\"max_suggestions\":5}") req, _ := http.NewRequest("PATCH", 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({ "hint": "Send a personalized greeting - updated", "description": "Sends a customizable greeting to a user or channel", "scope": "organization", "options": { "user": "The user to greet", "msg": "Custom greeting message" }, "max_suggestions": 5 }); const xhr = new XMLHttpRequest(); xhr.withCredentials = true; xhr.addEventListener("readystatechange", function () { if (this.readyState === this.DONE) { console.log(this.responseText); } }); xhr.open("PATCH", "https://cliq.zoho.com/api/v3/commands/%7BSLASH_COMMAND_ID%7D"); xhr.setRequestHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); xhr.setRequestHeader("content-type", "application/json"); xhr.send(data);
curl --request PATCH \ --url https://cliq.zoho.com/api/v3/commands/%7BSLASH_COMMAND_ID%7D \ --header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'content-type: application/json' \ --data '{"hint":"Send a personalized greeting - updated","description":"Sends a customizable greeting to a user or channel","scope":"organization","options":{"user":"The user to greet","msg":"Custom greeting message"},"max_suggestions":5}'

Body Parameters

Click to copy
{ "hint": "Raise a support ticket - updated", "description": "Updated description via API", "scope": "organization", "max_suggestions": 5 }
{ "execution_url": "https://api.yourcompany.com/cliq/commands/updated-handler" }

Response Example

{ "url": "/api/v3/commands/227828000000128009", "type": "command", "data": { "name": "support", "id": "227828000000128009", "handlers": [ { "type": "execution_handler" } ], "creator": { "name": "Ryan West", "id": "119440882" }, "execution_type": "deluge", "hint": "Raise a support ticket - updated", "status": "enabled", "type": "custom", "description": "Updated description via API", "scope": "organization" } }
{ "url": "/api/v3/commands/227828000000129001", "type": "command", "data": { "name": "deploy", "id": "227828000000129001", "handlers": [ { "type": "execution_handler" } ], "creator": { "name": "Ryan West", "id": "119440882" }, "execution_type": "webhook", "execution_url": "https://api.yourcompany.com/cliq/commands/updated-handler", "hint": "Trigger a deployment pipeline", "status": "enabled", "type": "custom", "description": "Triggers a Jenkins deployment from Cliq", "scope": "organization" } }
{ "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": "The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL." }
{ "message": "The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method." }
{ "message": "The response has been received but the requested response type is not supported by the browser." }
{ "message": "Too many requests within a certain time frame." }
{ "message": "Cliq server encountered an error which prevents it from fulfilling the request." }

Get a command 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

Retrieve details of a specific slash command.

Threshold limit: 30 requests per min per user
Maximum API calls allowed within one minute.

Lock period: 5 minutes
Cooldown period applied after threshold exhaustion.


Possible Error Codes

Error Code Description
command_not_found Command with the specified ID was not found.
command_not_found You do not have permission to view this command.

Error Response Format

When an error occurs, the API returns a JSON response in this format:

{"message": "A human-readable description of the error.", "code": "error_code"}

where code is the error identifier (as listed in the table above) and message is a human-readable explanation of what went wrong.


OAuth Scope : ZohoCliq.Commands.READ

Path Parameters

SLASH_COMMAND_ID
string
(Required)
Unique numeric identifier of the slash command. To learn how to retrieve this ID, see SLASH_COMMAND_ID in the Glossary page.

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://cliq.zoho.com/api/v3/commands/987000000654321" 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/v3/commands/987000000654321") .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/v3/commands/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") headers = { 'Authorization': "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("GET", "/api/v3/commands/987000000654321", 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/v3/commands/987000000654321", "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/commands/987000000654321"); 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/v3/commands/987000000654321"), 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/commands/987000000654321" 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/v3/commands/987000000654321"); xhr.setRequestHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); xhr.send(data);
curl --request GET \ --url https://cliq.zoho.com/api/v3/commands/987000000654321 \ --header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "url": "/api/v3/commands/227828000000128009", "type": "command", "data": { "name": "greet", "id": "227828000000128009", "handlers": [ { "type": "execution_handler" } ], "creator": { "name": "Ryan West", "id": "119440882" }, "execution_type": "deluge", "hint": "Send a greeting message", "status": "enabled", "max_suggestions": 5, "type": "custom", "description": "Sends a customizable greeting to a user or channel", "scope": "organization", "options": { "user": "The user to greet", "msg": "Custom greeting message" } } }
{ "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": "The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL." }
{ "message": "The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method." }
{ "message": "The response has been received but the requested response type is not supported by the browser." }
{ "message": "Too many requests within a certain time frame." }
{ "message": "Cliq server encountered an error which prevents it from fulfilling the request." }

Delete a slash command 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

Permanently delete a custom Slash Command and all its associated handlers. The command will be removed from all accessible scopes and can no longer be invoked by users. This action is irreversible.

Threshold limit: 10 requests per min per user
Maximum API calls allowed within one minute.

Lock period: 5 minutes
Cooldown period applied after threshold exhaustion.


Possible Error Codes

Error Code Description
command_not_found Command with the specified ID was not found.

Error Response Format

When an error occurs, the API returns a JSON response in this format:

{"message": "A human-readable description of the error.", "code": "error_code"}

where code is the error identifier (as listed in the table above) and message is a human-readable explanation of what went wrong.


OAuth Scope : ZohoCliq.Commands.DELETE

Path Parameters

SLASH_COMMAND_ID
string
(Required)
Unique numeric identifier of the slash command. To learn how to retrieve this ID, see SLASH_COMMAND_ID in the Glossary page.

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://cliq.zoho.com/api/v3/commands/987000000654321" type: DELETE headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://cliq.zoho.com/api/v3/commands/987000000654321") .delete(null) .addHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'DELETE', headers: { Authorization: 'Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://cliq.zoho.com/api/v3/commands/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") headers = { 'Authorization': "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("DELETE", "/api/v3/commands/987000000654321", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "DELETE", "hostname": "cliq.zoho.com", "port": null, "path": "/api/v3/commands/987000000654321", "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/commands/987000000654321"); var request = new RestRequest(Method.DELETE); request.AddHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); IRestResponse response = client.Execute(request);
var client = new HttpClient(); var request = new HttpRequestMessage { Method = HttpMethod.Delete, RequestUri = new Uri("https://cliq.zoho.com/api/v3/commands/987000000654321"), 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/commands/987000000654321" req, _ := http.NewRequest("DELETE", 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("DELETE", "https://cliq.zoho.com/api/v3/commands/987000000654321"); xhr.setRequestHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); xhr.send(data);
curl --request DELETE \ --url https://cliq.zoho.com/api/v3/commands/987000000654321 \ --header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "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": "The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL." }
{ "message": "The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method." }
{ "message": "The response has been received but the requested response type is not supported by the browser." }
{ "message": "Too many requests within a certain time frame." }
{ "message": "Cliq server encountered an error which prevents it from fulfilling the request." }

Create a handler for a specific command 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

Add a new handler to an existing slash command. Commands support two handler types:

  • Execution handler: Executes the command's primary function when invoked.
  • Suggestion handler: Provides dynamic autocomplete suggestions as users type the command.

The field you provide depends on the command's execution type:

  • Deluge command: Provide the script field with the Deluge source code to execute when the handler fires.
  • Webhook command: Provide the permissions field - an array of data attributes your server needs to receive in the webhook payload. Do not pass script for Webhook commands.

Permissions availability by handler type

Handler attachments chat location user
execution_handler
suggestion_handler -

Note: attachments is not available for suggestion_handler. All permissions are available for execution_handler.


Threshold limit: 10 requests per min per user
Maximum API calls allowed within one minute.

Lock period: 5 minutes
Cooldown period applied after threshold exhaustion.


Possible Error Codes

Error Code Description
execution_handler_create_failed Failed to create the handler.
execution_handler_data_required Required field missing.
execution_handler_data_invalid Handler data is invalid.
invalid_inputs Invalid handler type or bad request body.

Error Response Format

When an error occurs, the API returns a JSON response in this format:

{"message": "A human-readable description of the error.", "code": "error_code"}

where code is the error identifier (as listed in the table above) and message is a human-readable explanation of what went wrong.


OAuth Scope : ZohoCliq.Commands.UPDATE

Arguments

type
string
(Required)
Type of the handler to create. Accepted values:
  • execution_handler: Executes on command invocation.
  • suggestion_handler: Executes to provide autocomplete suggestions as users type the command.
script
string
Deluge script source code for the handler.
Maximum size: 250KB
Note: Applicable only for Deluge commands. Do not pass script for Webhook commands - use permissions instead.
permissions
array
List of data attributes to forward to your server in the webhook payload when the handler fires.
Note: Applicable only for Webhook commands. Do not pass permissions for Deluge commands - use script instead.
Maximum: 5 permissions per handler.
Allowed values:
  • attachments: File attachment metadata. Not available for suggestion_handler.
  • chat: Chat context (chat ID, type, participants).
  • location: Sender's location data.
  • user: Sender's user profile details.
Refer to the permissions availability table in the Create a handler endpoint for per-handler availability.

Path Parameters

SLASH_COMMAND_ID
string
(Required)
Unique numeric identifier of the slash command.
To learn how to retrieve this ID, see SLASH_COMMAND_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/v3/commands/987000000654321/handlers" 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/v3/commands/987000000654321/handlers") .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/v3/commands/987000000654321/handlers', 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/v3/commands/987000000654321/handlers", 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/v3/commands/987000000654321/handlers", "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/commands/987000000654321/handlers"); 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/v3/commands/987000000654321/handlers"), 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/commands/987000000654321/handlers" 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/v3/commands/987000000654321/handlers"); 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/v3/commands/987000000654321/handlers \ --header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'content-type: application/json' \ --data '{"field1":"value1","field2":"value2"}'

Body Parameters

Click to copy
{ "type": "execution_handler", "script": "response = Map();\nuser = info.get(\"user_info\").get(\"name\");\nresponse.put(\"text\", \"Hello, \" + user + \"! Support ticket created.\");\nreturn response;\n" }
{ "type": "execution_handler", "permissions": [ "chat", "user" ] }
{ "type": "suggestion_handler", "script": "suggestions = List();\nsuggestions.add({\"value\": \"create\", \"label\": \"Create a new ticket\"});\nsuggestions.add({\"value\": \"lookup\", \"label\": \"Look up an existing ticket\"});\nreturn {\"suggestions\": suggestions};\n" }
{ "type": "suggestion_handler", "permissions": [ "chat", "user" ] }

Response Example

{ "url": "/api/v3/commands/227828000000128009/handlers/execution_handler", "type": "execution_handler", "data": { "name": "execution_handler", "script": "response = Map();\nuser = info.get(\"user_info\").get(\"name\");\nresponse.put(\"text\", \"Hello, \" + user + \"! Support ticket created.\");\nreturn response;\n", "function_id": "227828000000128009" } }
{ "url": "/api/v3/commands/227828000000129001/handlers/execution_handler", "type": "execution_handler", "data": { "name": "execution_handler", "permissions": [ "chat", "user" ], "function_id": "227828000000129001" } }
{ "url": "/api/v3/commands/227828000000128009/handlers/suggestion_handler", "type": "suggestion_handler", "data": { "name": "suggestion_handler", "script": "suggestions = List();\nsuggestions.add({\"value\": \"create\", \"label\": \"Create a new ticket\"});\nsuggestions.add({\"value\": \"lookup\", \"label\": \"Look up an existing ticket\"});\nreturn {\"suggestions\": suggestions};\n", "function_id": "227828000000128009" } }
{ "url": "/api/v3/commands/227828000000129001/handlers/suggestion_handler", "type": "suggestion_handler", "data": { "name": "suggestion_handler", "permissions": [ "chat", "user" ], "function_id": "227828000000129001" } }
{ "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": "The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL." }
{ "message": "The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method." }
{ "message": "The response has been received but the requested response type is not supported by the browser." }
{ "message": "Too many requests within a certain time frame." }
{ "message": "Cliq server encountered an error which prevents it from fulfilling the request." }

Update a handler for a specific command 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

Update a handler for a specific slash command. What you provide depends on the command's execution type:

  • Deluge command: Update the script attribute with the revised Deluge source code.
  • Webhook command: Update the permissions array to change which data attributes are forwarded to your server.

Threshold limit: 10 requests per min per user
Maximum API calls allowed within one minute.

Lock period: 5 minutes
Cooldown period applied after threshold exhaustion.


Possible Error Codes

Error Code Description
execution_handler_update_failed Failed to update the handler.
execution_handler_not_found Handler not found for this component.

Error Response Format

When an error occurs, the API returns a JSON response in this format:

{"message": "A human-readable description of the error.", "code": "error_code"}

where code is the error identifier (as listed in the table above) and message is a human-readable explanation of what went wrong.


OAuth Scope : ZohoCliq.Commands.UPDATE

Arguments

script
string
Updated Deluge script source code for the handler.
Maximum size: 250KB
Note: Applicable only for Deluge commands.
permissions
array
Updated list of data attributes to forward to your server in the webhook payload.
Note: Applicable only for Webhook commands.
Allowed values: attachments, chat, location, user. Note: attachments is not available for suggestion_handler.

Path Parameters

COMMAND_HANDLER_TYPE
string
(Required)
Type of the handler to update.
Allowed values:
  • execution_handler: The main handler that executes when the command is invoked.
  • suggestion_handler: The handler that generates autocomplete suggestions as users type the command.
SLASH_COMMAND_ID
string
(Required)
Unique numeric identifier of the slash command. To learn how to retrieve this ID, see SLASH_COMMAND_ID in the Glossary page.

Request Example

Click to copy
parameters_data='{"script":"string","permissions":["attachments"]}'; headers_data = Map(); headers_data.put("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://cliq.zoho.com/api/v3/commands/227828000000128000/handlers/execution_handler" type: PATCH 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, "{\"script\":\"string\",\"permissions\":[\"attachments\"]}"); Request request = new Request.Builder() .url("https://cliq.zoho.com/api/v3/commands/227828000000128000/handlers/execution_handler") .patch(body) .addHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute();
const options = { method: 'PATCH', headers: { Authorization: 'Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f', 'content-type': 'application/json' }, body: '{"script":"string","permissions":["attachments"]}' }; fetch('https://cliq.zoho.com/api/v3/commands/227828000000128000/handlers/execution_handler', 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 = "{\"script\":\"string\",\"permissions\":[\"attachments\"]}" headers = { 'Authorization': "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", 'content-type': "application/json" } conn.request("PATCH", "/api/v3/commands/227828000000128000/handlers/execution_handler", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "PATCH", "hostname": "cliq.zoho.com", "port": null, "path": "/api/v3/commands/227828000000128000/handlers/execution_handler", "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({script: 'string', permissions: ['attachments']})); req.end();
var client = new RestClient("https://cliq.zoho.com/api/v3/commands/227828000000128000/handlers/execution_handler"); var request = new RestRequest(Method.PATCH); request.AddHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); request.AddHeader("content-type", "application/json"); request.AddParameter("application/json", "{\"script\":\"string\",\"permissions\":[\"attachments\"]}", ParameterType.RequestBody); IRestResponse response = client.Execute(request);
var client = new HttpClient(); var request = new HttpRequestMessage { Method = HttpMethod.Patch, RequestUri = new Uri("https://cliq.zoho.com/api/v3/commands/227828000000128000/handlers/execution_handler"), Headers = { { "Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" }, }, Content = new StringContent("{\"script\":\"string\",\"permissions\":[\"attachments\"]}") { 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/commands/227828000000128000/handlers/execution_handler" payload := strings.NewReader("{\"script\":\"string\",\"permissions\":[\"attachments\"]}") req, _ := http.NewRequest("PATCH", 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({ "script": "string", "permissions": [ "attachments" ] }); const xhr = new XMLHttpRequest(); xhr.withCredentials = true; xhr.addEventListener("readystatechange", function () { if (this.readyState === this.DONE) { console.log(this.responseText); } }); xhr.open("PATCH", "https://cliq.zoho.com/api/v3/commands/227828000000128000/handlers/execution_handler"); xhr.setRequestHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); xhr.setRequestHeader("content-type", "application/json"); xhr.send(data);
curl --request PATCH \ --url https://cliq.zoho.com/api/v3/commands/227828000000128000/handlers/execution_handler \ --header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'content-type: application/json' \ --data '{"script":"string","permissions":["attachments"]}'

Body Parameters

Click to copy
{ "script": "response = Map();\nuser = info.get(\"user_info\").get(\"name\");\nresponse.put(\"text\", \"Hello, \" + user + \"! Updated ticket handler.\");\nreturn response;\n" }
{ "permissions": [ "chat", "location", "user" ] }

Response Example

{ "url": "/api/v3/commands/227828000000128009/handlers/execution_handler", "type": "execution_handler", "data": { "name": "execution_handler", "script": "response = Map();\nuser = info.get(\"user_info\").get(\"name\");\nresponse.put(\"text\", \"Hello, \" + user + \"! Updated ticket handler.\");\nreturn response;\n", "function_id": "227828000000128009" } }
{ "url": "/api/v3/commands/227828000000129001/handlers/execution_handler", "type": "execution_handler", "data": { "name": "execution_handler", "permissions": [ "chat", "location", "user" ], "function_id": "227828000000129001" } }
{ "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": "The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL." }
{ "message": "The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method." }
{ "message": "The response has been received but the requested response type is not supported by the browser." }
{ "message": "Too many requests within a certain time frame." }
{ "message": "Cliq server encountered an error which prevents it from fulfilling the request." }

Get details of a specific command handler 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

Retrieve the configuration and deluge source code of a specific handler associated with a slash command.

Threshold limit: 10 requests per min per user
Maximum API calls allowed within one minute.

Lock period: 5 minutes
Cooldown period applied after threshold exhaustion.


Possible Error Codes

Error Code Description
execution_handler_get_failed Failed to fetch the handler.
execution_handler_not_found Handler was not found for this command.

Error Response Format

When an error occurs, the API returns a JSON response in this format:

{"message": "A human-readable description of the error.", "code": "error_code"}

where code is the error identifier (as listed in the table above) and message is a human-readable explanation of what went wrong.


OAuth Scope : ZohoCliq.Commands.READ

Path Parameters

COMMAND_HANDLER_TYPE
string
(Required)
Type of the handler to retrieve.
Allowed values:
  • execution_handler: The main handler that executes when the command is invoked.
  • suggestion_handler: The handler that generates autocomplete suggestions as users type the command.
SLASH_COMMAND_ID
string
(Required)
Unique numeric identifier of the slash command.
To learn how to retrieve this ID, see SLASH_COMMAND_ID in the Glossary page.'

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://cliq.zoho.com/api/v3/commands/227828000000128000/handlers/execution_handler" 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/v3/commands/227828000000128000/handlers/execution_handler") .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/v3/commands/227828000000128000/handlers/execution_handler', 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/v3/commands/227828000000128000/handlers/execution_handler", 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/v3/commands/227828000000128000/handlers/execution_handler", "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/commands/227828000000128000/handlers/execution_handler"); 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/v3/commands/227828000000128000/handlers/execution_handler"), 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/commands/227828000000128000/handlers/execution_handler" 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/v3/commands/227828000000128000/handlers/execution_handler"); xhr.setRequestHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); xhr.send(data);
curl --request GET \ --url https://cliq.zoho.com/api/v3/commands/227828000000128000/handlers/execution_handler \ --header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "url": "/api/v3/commands/227828000000128009", "type": "command", "data": { "name": "greet", "id": "227828000000128009", "handlers": [ { "type": "execution_handler" } ], "creator": { "name": "Ryan West", "id": "119440882" }, "execution_type": "deluge", "hint": "Send a greeting message", "status": "enabled", "max_suggestions": 5, "type": "custom", "description": "Sends a customizable greeting to a user or channel", "scope": "organization", "options": { "user": "The user to greet", "msg": "Custom greeting message" } } }
{ "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": "The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL." }
{ "message": "The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method." }
{ "message": "The response has been received but the requested response type is not supported by the browser." }
{ "message": "Too many requests within a certain time frame." }
{ "message": "Cliq server encountered an error which prevents it from fulfilling the request." }

Delete a handler from a specific command 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

Permanently remove a specified handler from a slash command. This action is irreversible, and once removed, the associated deluge code is lost, and the handler will no longer activate on its trigger event.

Threshold limit: 10 requests per min per user
Maximum API calls allowed within one minute.

Lock period: 5 minutes
Cooldown period applied after threshold exhaustion.


Possible Error Codes

Error Code Description
execution_handler_delete_failed Failed to delete the handler.
default_handler_delete_not_allowed Default handlers cannot be deleted.
execution_handler_not_found Handler was not found for this command.

Error Response Format

When an error occurs, the API returns a JSON response in this format:

{"message": "A human-readable description of the error.", "code": "error_code"}

where code is the error identifier (as listed in the table above) and message is a human-readable explanation of what went wrong.


OAuth Scope : ZohoCliq.Commands.UPDATE

Path Parameters

COMMAND_HANDLER_TYPE
string
(Required)
Name of the slash command handler.
Allowed value:
  • suggestion_handler: The handler that generates autocomplete suggestions as users type the command.
Note: Only the suggestion_handler can be deleted. The execution_handler is mandatory for a slash command and cannot be removed.
SLASH_COMMAND_ID
string
(Required)
Unique numeric identifier of the slash command. To learn how to retrieve this ID, see SLASH_COMMAND_ID in the Glossary page.

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://cliq.zoho.com/api/v3/commands/227828000000128000/handlers/suggestion_handler" type: DELETE headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://cliq.zoho.com/api/v3/commands/227828000000128000/handlers/suggestion_handler") .delete(null) .addHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'DELETE', headers: { Authorization: 'Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://cliq.zoho.com/api/v3/commands/227828000000128000/handlers/suggestion_handler', 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("DELETE", "/api/v3/commands/227828000000128000/handlers/suggestion_handler", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "DELETE", "hostname": "cliq.zoho.com", "port": null, "path": "/api/v3/commands/227828000000128000/handlers/suggestion_handler", "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/commands/227828000000128000/handlers/suggestion_handler"); var request = new RestRequest(Method.DELETE); request.AddHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); IRestResponse response = client.Execute(request);
var client = new HttpClient(); var request = new HttpRequestMessage { Method = HttpMethod.Delete, RequestUri = new Uri("https://cliq.zoho.com/api/v3/commands/227828000000128000/handlers/suggestion_handler"), 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/commands/227828000000128000/handlers/suggestion_handler" req, _ := http.NewRequest("DELETE", 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("DELETE", "https://cliq.zoho.com/api/v3/commands/227828000000128000/handlers/suggestion_handler"); xhr.setRequestHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); xhr.send(data);
curl --request DELETE \ --url https://cliq.zoho.com/api/v3/commands/227828000000128000/handlers/suggestion_handler \ --header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "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": "The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL." }
{ "message": "The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method." }
{ "message": "The response has been received but the requested response type is not supported by the browser." }
{ "message": "Too many requests within a certain time frame." }
{ "message": "Cliq server encountered an error which prevents it from fulfilling the request." }