openapi: 3.0.0 info: title: Bots slashcommands API description: "

Bots are conversational assistants designed to automate repetitive tasks and manage simple user interactions. Their behavior is fully customizable through predefined Bot Handlers, which are activated by specific actions or through Webhooks that communicate with your own external server.

For more information about Bots, please refer to the Bots Help Documentation.

Bot Handlers

Types of Bot Handlers

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
HandlerDescription
Menu HandlerAdds up to 5 quick-action items to the bot's chat menu. Triggered when a user interacts with the menu.
Message HandlerTriggered when the bot receives a message.
Welcome HandlerDefines the greeting message sent when a user subscribes to the bot.
Mention HandlerTriggered when the bot is @mentioned in a chat or channel.
Incoming Webhook HandlerAllows external services to post messages into the bot via outgoing webhooks.
Context HandlerManages multi-turn conversations, maintaining context across a user's interaction with the bot.

What you can do with the Bots API?

With the Bots API, you can retrieve information about a specific bot, list all bots within your organization, manage configurations specific to handlers, trigger bot calls programmatically, manage subscribers, and much more.

Each bot has an execution_type that defines how its handlers run when a trigger event occurs. The Bots API allows developers to create two types of bots:

Deluge Bots (default)
Deluge bot executes handler logic using Zoho's Deluge scripting language, hosted entirely within the Zoho Cliq Developer platform, where no external server is required.

Webhook Bots
A Webhook bot delegates all handler execution to your own external server. When a trigger event fires, Zoho Cliq sends an HTTP POST request to the execution_url you configure, and your server processes the event and returns a response.

\n" contact: {} version: 1.0.0 servers: - url: https://cliq.zoho.com/api/v3 description: Zoho Cliq US DC tags: - name: slashcommands description: Slash Commands Module paths: /commands: post: summary: Create a slash command operationId: creating_extension_command description: "\n

\n 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).\n

\n

\n Slash Commands support two execution types:\n

\n\n

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

\n
\n

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

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

\n
\n \n !\n Possible Error Codes\n Click to expand\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Error CodeDescription
Security validation errorThe name field is required.
Security validation errorThe hint field is required.
Security validation errorThe scope field is required.
Security validation errorThe name must not exceed 30 characters.
Security validation errorThe hint must not exceed 128 characters.
Security validation errorThe description must not exceed 300 characters.
Security validation errorA command cannot have more than 5 options.
Security validation errorEach option value must not exceed 100 characters.
command_name_already_existsA command with this name already exists.
command_creation_limit_exceededThe maximum number of slash commands allowed has been reached.
command_not_validThe provided command data is invalid or malformed.
\n
\n
\n Error Response Format\n

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

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

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

\n
\n
\n
\n" parameters: [] requestBody: description: Creates a slash command. Provide `name`, `hint`, and `scope`. Set `execution_type` to `webhook` and include `execution_url` for a Webhook command. required: true content: application/json: examples: deluge_command: summary: Deluge slash command value: name: support hint: Raise a support ticket scope: organization execution_type: deluge description: Creates a ZohoDesk ticket from the chat interface webhook_command: summary: Webhook slash command value: 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 schema: $ref: '#/components/schemas/create-slash-command-request-body' responses: '200': description: Slash command created successfully. content: application/json: schema: $ref: '#/components/schemas/SlashCommandResponse' examples: deluge_command: summary: Deluge slash command response value: 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 webhook_command: summary: Webhook slash command response value: 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 '400': description: Bad Request. content: application/json: schema: type: object properties: message: type: string example: The request cannot be performed. Usually because of malformed parameter or missing parameter. '401': description: Unauthorized. content: application/json: schema: type: object properties: message: type: string example: Request was rejected because of invalid AuthToken. '403': description: Forbidden. content: application/json: schema: type: object properties: message: type: string example: The user does not have enough permission or possibly not an user of the respective organization to access the resource. '404': description: Invalid URL. content: application/json: schema: type: object properties: message: type: string example: The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL. '405': description: Method Not Allowed. content: application/json: schema: type: object properties: message: type: string example: The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method. '406': description: Not Acceptable. content: application/json: schema: type: object properties: message: type: string example: The response has been received but the requested response type is not supported by the browser. '429': description: Too many requests. content: application/json: schema: type: object properties: message: type: string example: Too many requests within a certain time frame. '500': description: Internal Server Error. content: application/json: schema: type: object properties: message: type: string example: Cliq server encountered an error which prevents it from fulfilling the request. security: - Cliq_Auth: - ZohoCliq.Commands.CREATE tags: - slashcommands get: summary: List all commands operationId: get_list_of_commands description: "Retrieve a paginated list of all slash commands.\n

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

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

\n" parameters: - schema: description: '' $ref: '#/components/schemas/base64_regex' in: query name: sync_token description: '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. ' required: false - schema: description: '' type: integer in: query name: limit description: 'Maximum number of commands to return in the response. This can be used to control pagination and manage response size. ' required: false - schema: description: '' $ref: '#/components/schemas/base64_regex' in: query name: next_token description: '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. ' required: false responses: '200': description: List of commands returned successfully. content: application/json: schema: $ref: '#/components/schemas/list-all-slash-commands-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) '400': description: Bad Request. content: application/json: schema: type: object properties: message: type: string example: The request cannot be performed. Usually because of malformed parameter or missing parameter. '401': description: Unauthorized. content: application/json: schema: type: object properties: message: type: string example: Request was rejected because of invalid AuthToken. '403': description: Forbidden. content: application/json: schema: type: object properties: message: type: string example: The user does not have enough permission or possibly not an user of the respective organization to access the resource. '404': description: Invalid URL. content: application/json: schema: type: object properties: message: type: string example: The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL. '405': description: Method Not Allowed. content: application/json: schema: type: object properties: message: type: string example: The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method. '406': description: Not Acceptable. content: application/json: schema: type: object properties: message: type: string example: The response has been received but the requested response type is not supported by the browser. '429': description: Too many requests. content: application/json: schema: type: object properties: message: type: string example: Too many requests within a certain time frame. '500': description: Internal Server Error. content: application/json: schema: type: object properties: message: type: string example: Cliq server encountered an error which prevents it from fulfilling the request. security: - Cliq_Auth: - ZohoCliq.Commands.READ tags: - slashcommands /commands/{SLASH_COMMAND_ID}: patch: summary: Update a slash command operationId: editing_extension_command description: "Update the configuration of an existing slash command.\n

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

\n

\n 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.\n

\n
\n

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

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

\n
\n \n !\n Possible Error Codes\n Click to expand\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Error CodeDescription
command_not_foundCommand with the specified ID does not exist.
command_name_already_existsA command with this name already exists.
command_not_validThe provided command data is invalid or malformed.
\n
\n
\n Error Response Format\n

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

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

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

\n
\n
\n
\n" parameters: - schema: description: '' $ref: '#/components/schemas/longid_regex' example: SLASH_COMMAND_ID in: path name: SLASH_COMMAND_ID description: Unique numeric identifier of the slash command. To learn how to retrieve this ID, see SLASH_COMMAND_ID in the Glossary page. required: true requestBody: description: Updates a slash command. Send only fields to change; omitted fields remain unchanged. For Webhook commands, use `execution_url` to update the server endpoint. required: true content: application/json: examples: update_details: summary: Update command details value: hint: Raise a support ticket - updated description: Updated description via API scope: organization max_suggestions: 5 update_webhook_url: summary: Update webhook execution URL value: execution_url: https://api.yourcompany.com/cliq/commands/updated-handler schema: $ref: '#/components/schemas/update-slash-command-request-body' responses: '200': description: Command updated successfully. content: application/json: schema: $ref: '#/components/schemas/SlashCommandResponse' examples: update_details: summary: Deluge command updated value: 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 update_webhook_url: summary: Webhook command execution URL updated value: 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 '400': description: Bad Request. content: application/json: schema: type: object properties: message: type: string example: The request cannot be performed. Usually because of malformed parameter or missing parameter. '401': description: Unauthorized. content: application/json: schema: type: object properties: message: type: string example: Request was rejected because of invalid AuthToken. '403': description: Forbidden. content: application/json: schema: type: object properties: message: type: string example: The user does not have enough permission or possibly not an user of the respective organization to access the resource. '404': description: Invalid URL. content: application/json: schema: type: object properties: message: type: string example: The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL. '405': description: Method Not Allowed. content: application/json: schema: type: object properties: message: type: string example: The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method. '406': description: Not Acceptable. content: application/json: schema: type: object properties: message: type: string example: The response has been received but the requested response type is not supported by the browser. '429': description: Too many requests. content: application/json: schema: type: object properties: message: type: string example: Too many requests within a certain time frame. '500': description: Internal Server Error. content: application/json: schema: type: object properties: message: type: string example: Cliq server encountered an error which prevents it from fulfilling the request. security: - Cliq_Auth: - ZohoCliq.Commands.UPDATE tags: - slashcommands get: summary: Get a command operationId: get_a_command description: "Retrieve details of a specific slash command.\n

\n

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

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

\n
\n \n !\n Possible Error Codes\n Click to expand\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Error CodeDescription
command_not_foundCommand with the specified ID was not found.
command_not_foundYou do not have permission to view this command.
\n
\n
\n Error Response Format\n

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

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

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

\n
\n
\n
\n" parameters: - schema: description: '' $ref: '#/components/schemas/longid_regex' example: SLASH_COMMAND_ID in: path name: SLASH_COMMAND_ID description: Unique numeric identifier of the slash command. To learn how to retrieve this ID, see SLASH_COMMAND_ID in the Glossary page. required: true responses: '200': description: Command details returned successfully. content: application/json: schema: $ref: '#/components/schemas/SlashCommandResponse' 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 '400': description: Bad Request. content: application/json: schema: type: object properties: message: type: string example: The request cannot be performed. Usually because of malformed parameter or missing parameter. '401': description: Unauthorized. content: application/json: schema: type: object properties: message: type: string example: Request was rejected because of invalid AuthToken. '403': description: Forbidden. content: application/json: schema: type: object properties: message: type: string example: The user does not have enough permission or possibly not an user of the respective organization to access the resource. '404': description: Invalid URL. content: application/json: schema: type: object properties: message: type: string example: The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL. '405': description: Method Not Allowed. content: application/json: schema: type: object properties: message: type: string example: The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method. '406': description: Not Acceptable. content: application/json: schema: type: object properties: message: type: string example: The response has been received but the requested response type is not supported by the browser. '429': description: Too many requests. content: application/json: schema: type: object properties: message: type: string example: Too many requests within a certain time frame. '500': description: Internal Server Error. content: application/json: schema: type: object properties: message: type: string example: Cliq server encountered an error which prevents it from fulfilling the request. security: - Cliq_Auth: - ZohoCliq.Commands.READ tags: - slashcommands delete: summary: Delete a slash command operationId: deleting_extension_command description: "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.\n

\n

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

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

\n
\n \n !\n Possible Error Codes\n Click to expand\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
Error CodeDescription
command_not_foundCommand with the specified ID was not found.
\n
\n
\n Error Response Format\n

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

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

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

\n
\n
\n
\n" parameters: - schema: description: '' $ref: '#/components/schemas/longid_regex' example: SLASH_COMMAND_ID in: path name: SLASH_COMMAND_ID description: Unique numeric identifier of the slash command. To learn how to retrieve this ID, see SLASH_COMMAND_ID in the Glossary page. required: true responses: '204': description: No Content. Command deleted successfully. '400': description: Bad Request. content: application/json: schema: type: object properties: message: type: string example: The request cannot be performed. Usually because of malformed parameter or missing parameter. '401': description: Unauthorized. content: application/json: schema: type: object properties: message: type: string example: Request was rejected because of invalid AuthToken. '403': description: Forbidden. content: application/json: schema: type: object properties: message: type: string example: The user does not have enough permission or possibly not an user of the respective organization to access the resource. '404': description: Invalid URL. content: application/json: schema: type: object properties: message: type: string example: The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL. '405': description: Method Not Allowed. content: application/json: schema: type: object properties: message: type: string example: The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method. '406': description: Not Acceptable. content: application/json: schema: type: object properties: message: type: string example: The response has been received but the requested response type is not supported by the browser. '429': description: Too many requests. content: application/json: schema: type: object properties: message: type: string example: Too many requests within a certain time frame. '500': description: Internal Server Error. content: application/json: schema: type: object properties: message: type: string example: Cliq server encountered an error which prevents it from fulfilling the request. security: - Cliq_Auth: - ZohoCliq.Commands.DELETE tags: - slashcommands /commands/{SLASH_COMMAND_ID}/handlers: post: summary: Create a handler for a specific command operationId: createCommandHandler description: "\n

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

\n\n

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

\n\n

Permissions availability by handler type

\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Handlerattachmentschatlocationuser
execution_handler
suggestion_handler-
\n

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

\n
\n

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

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

\n
\n \n !\n Possible Error Codes\n Click to expand\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Error CodeDescription
execution_handler_create_failedFailed to create the handler.
execution_handler_data_requiredRequired field missing.
execution_handler_data_invalidHandler data is invalid.
invalid_inputsInvalid handler type or bad request body.
\n
\n
\n Error Response Format\n

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

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

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

\n
\n
\n
\n" parameters: - schema: description: '' $ref: '#/components/schemas/longid_regex' example: SLASH_COMMAND_ID in: path name: SLASH_COMMAND_ID description: 'Unique numeric identifier of the slash command.
To learn how to retrieve this ID, see SLASH_COMMAND_ID in the Glossary page.'' ' required: true requestBody: description: Creates a slash-command handler. For Deluge commands, provide `type` and `script`. For Webhook commands, provide `type` and `permissions`. required: true content: application/json: examples: execution_handler_deluge: summary: Execution handler - Deluge command description: Provide `script` with the Deluge source code. Runs directly on Zoho's platform. value: type: execution_handler script: 'response = Map(); user = info.get("user_info").get("name"); response.put("text", "Hello, " + user + "! Support ticket created."); return response; ' execution_handler_webhook: summary: Execution handler - Webhook command description: Provide `permissions` to specify the data your server needs. Cliq will forward these to your `execution_url`. value: type: execution_handler permissions: - chat - user suggestion_handler_deluge: summary: Suggestion handler - Deluge command description: Runs to generate autocomplete suggestions as users type the command. value: type: suggestion_handler script: 'suggestions = List(); suggestions.add({"value": "create", "label": "Create a new ticket"}); suggestions.add({"value": "lookup", "label": "Look up an existing ticket"}); return {"suggestions": suggestions}; ' suggestion_handler_webhook: summary: Suggestion handler - Webhook command description: Webhook commands route suggestion requests to your `execution_url` with the configured permissions. value: type: suggestion_handler permissions: - chat - user schema: $ref: '#/components/schemas/v3-exehandler-create' responses: '200': description: Command handler created successfully. content: application/json: schema: $ref: '#/components/schemas/SlashCommandResponse' examples: execution_handler_deluge: summary: Execution handler created - Deluge value: url: /api/v3/commands/227828000000128009/handlers/execution_handler type: execution_handler data: name: execution_handler script: 'response = Map(); user = info.get("user_info").get("name"); response.put("text", "Hello, " + user + "! Support ticket created."); return response; ' function_id: '227828000000128009' execution_handler_webhook: summary: Execution handler created - Webhook value: url: /api/v3/commands/227828000000129001/handlers/execution_handler type: execution_handler data: name: execution_handler permissions: - chat - user function_id: '227828000000129001' suggestion_handler_deluge: summary: Suggestion handler created - Deluge value: url: /api/v3/commands/227828000000128009/handlers/suggestion_handler type: suggestion_handler data: name: suggestion_handler script: 'suggestions = List(); suggestions.add({"value": "create", "label": "Create a new ticket"}); suggestions.add({"value": "lookup", "label": "Look up an existing ticket"}); return {"suggestions": suggestions}; ' function_id: '227828000000128009' suggestion_handler_webhook: summary: Suggestion handler created - Webhook value: url: /api/v3/commands/227828000000129001/handlers/suggestion_handler type: suggestion_handler data: name: suggestion_handler permissions: - chat - user function_id: '227828000000129001' '400': description: Bad Request. content: application/json: schema: type: object properties: message: type: string example: The request cannot be performed. Usually because of malformed parameter or missing parameter. '401': description: Unauthorized. content: application/json: schema: type: object properties: message: type: string example: Request was rejected because of invalid AuthToken. '403': description: Forbidden. content: application/json: schema: type: object properties: message: type: string example: The user does not have enough permission or possibly not an user of the respective organization to access the resource. '404': description: Invalid URL. content: application/json: schema: type: object properties: message: type: string example: The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL. '405': description: Method Not Allowed. content: application/json: schema: type: object properties: message: type: string example: The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method. '406': description: Not Acceptable. content: application/json: schema: type: object properties: message: type: string example: The response has been received but the requested response type is not supported by the browser. '429': description: Too many requests. content: application/json: schema: type: object properties: message: type: string example: Too many requests within a certain time frame. '500': description: Internal Server Error. content: application/json: schema: type: object properties: message: type: string example: Cliq server encountered an error which prevents it from fulfilling the request. security: - Cliq_Auth: - ZohoCliq.Commands.UPDATE tags: - slashcommands /commands/{SLASH_COMMAND_ID}/handlers/{COMMAND_HANDLER_TYPE}: patch: summary: Update a handler for a specific command operationId: updateCommandHandler description: "Update a handler for a specific slash command. What you provide depends on the command's execution type:\n\n
\n

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

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

\n
\n \n !\n Possible Error Codes\n Click to expand\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Error CodeDescription
execution_handler_update_failedFailed to update the handler.
execution_handler_not_foundHandler not found for this component.
\n
\n
\n Error Response Format\n

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

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

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

\n
\n
\n
\n" parameters: - schema: description: '' $ref: '#/components/schemas/COMMAND_HANDLER_TYPE_regex' example: COMMAND_HANDLER_TYPE in: path name: COMMAND_HANDLER_TYPE description: "Type of the handler to update.
\nAllowed values:\n\n" required: true - schema: description: '' $ref: '#/components/schemas/longid_regex' example: SLASH_COMMAND_ID in: path name: SLASH_COMMAND_ID description: Unique numeric identifier of the slash command. To learn how to retrieve this ID, see SLASH_COMMAND_ID in the Glossary page. required: true requestBody: description: Updates a command handler. For Deluge commands, provide `script`. For Webhook commands, provide `permissions`. required: true content: application/json: examples: update_script_deluge: summary: Update script - Deluge command description: Update the Deluge script that runs when the command is invoked. value: script: 'response = Map(); user = info.get("user_info").get("name"); response.put("text", "Hello, " + user + "! Updated ticket handler."); return response; ' update_permissions_webhook: summary: Update permissions - Webhook command description: Update the data attributes sent to your server when the handler fires. value: permissions: - chat - location - user schema: $ref: '#/components/schemas/v3-exehandler-edit' responses: '200': description: Command handler updated successfully. content: application/json: schema: $ref: '#/components/schemas/SlashCommandResponse' examples: update_script_deluge: summary: Script updated - Deluge command value: url: /api/v3/commands/227828000000128009/handlers/execution_handler type: execution_handler data: name: execution_handler script: 'response = Map(); user = info.get("user_info").get("name"); response.put("text", "Hello, " + user + "! Updated ticket handler."); return response; ' function_id: '227828000000128009' update_permissions_webhook: summary: Permissions updated - Webhook command value: url: /api/v3/commands/227828000000129001/handlers/execution_handler type: execution_handler data: name: execution_handler permissions: - chat - location - user function_id: '227828000000129001' '400': description: Bad Request. content: application/json: schema: type: object properties: message: type: string example: The request cannot be performed. Usually because of malformed parameter or missing parameter. '401': description: Unauthorized. content: application/json: schema: type: object properties: message: type: string example: Request was rejected because of invalid AuthToken. '403': description: Forbidden. content: application/json: schema: type: object properties: message: type: string example: The user does not have enough permission or possibly not an user of the respective organization to access the resource. '404': description: Invalid URL. content: application/json: schema: type: object properties: message: type: string example: The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL. '405': description: Method Not Allowed. content: application/json: schema: type: object properties: message: type: string example: The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method. '406': description: Not Acceptable. content: application/json: schema: type: object properties: message: type: string example: The response has been received but the requested response type is not supported by the browser. '429': description: Too many requests. content: application/json: schema: type: object properties: message: type: string example: Too many requests within a certain time frame. '500': description: Internal Server Error. content: application/json: schema: type: object properties: message: type: string example: Cliq server encountered an error which prevents it from fulfilling the request. security: - Cliq_Auth: - ZohoCliq.Commands.UPDATE tags: - slashcommands get: summary: Get details of a specific command handler operationId: get_details_of_a_specific_comm description: "Retrieve the configuration and deluge source code of a specific handler associated with a slash command.\n

\n

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

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

\n
\n \n !\n Possible Error Codes\n Click to expand\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Error CodeDescription
execution_handler_get_failedFailed to fetch the handler.
execution_handler_not_foundHandler was not found for this command.
\n
\n
\n Error Response Format\n

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

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

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

\n
\n
\n
\n" parameters: - schema: description: '' $ref: '#/components/schemas/COMMAND_HANDLER_TYPE_regex' example: COMMAND_HANDLER_TYPE in: path name: COMMAND_HANDLER_TYPE description: "Type of the handler to retrieve.
\nAllowed values:\n\n" required: true - schema: description: '' $ref: '#/components/schemas/longid_regex' example: SLASH_COMMAND_ID in: path name: SLASH_COMMAND_ID description: 'Unique numeric identifier of the slash command.
To learn how to retrieve this ID, see SLASH_COMMAND_ID in the Glossary page.'' ' required: true responses: '200': description: Command handler details returned successfully. content: application/json: schema: $ref: '#/components/schemas/SlashCommandResponse' example: url: /api/v3/commands/227828000000128009/handlers/execution_handler type: execution_handler data: name: execution_handler script: 'response = Map(); user = info.get("user_info").get("name"); response.put("text", "Hello, " + user + "! Command executed successfully."); return response; ' function_id: '227828000000128009' '400': description: Bad Request. content: application/json: schema: type: object properties: message: type: string example: The request cannot be performed. Usually because of malformed parameter or missing parameter. '401': description: Unauthorized. content: application/json: schema: type: object properties: message: type: string example: Request was rejected because of invalid AuthToken. '403': description: Forbidden. content: application/json: schema: type: object properties: message: type: string example: The user does not have enough permission or possibly not an user of the respective organization to access the resource. '404': description: Invalid URL. content: application/json: schema: type: object properties: message: type: string example: The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL. '405': description: Method Not Allowed. content: application/json: schema: type: object properties: message: type: string example: The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method. '406': description: Not Acceptable. content: application/json: schema: type: object properties: message: type: string example: The response has been received but the requested response type is not supported by the browser. '429': description: Too many requests. content: application/json: schema: type: object properties: message: type: string example: Too many requests within a certain time frame. '500': description: Internal Server Error. content: application/json: schema: type: object properties: message: type: string example: Cliq server encountered an error which prevents it from fulfilling the request. security: - Cliq_Auth: - ZohoCliq.Commands.READ tags: - slashcommands delete: summary: Delete a handler from a specific command operationId: deleteCommandHandler description: "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.\n

\n

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

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

\n
\n \n !\n Possible Error Codes\n Click to expand\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Error CodeDescription
execution_handler_delete_failedFailed to delete the handler.
default_handler_delete_not_allowedDefault handlers cannot be deleted.
execution_handler_not_foundHandler was not found for this command.
\n
\n
\n Error Response Format\n

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

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

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

\n
\n
\n
\n" parameters: - schema: description: '' $ref: '#/components/schemas/COMMAND_HANDLER_TYPE_regex' example: COMMAND_HANDLER_TYPE in: path name: COMMAND_HANDLER_TYPE description: "Name of the slash command handler.
\nAllowed value:\n\nNote: Only the suggestion_handler can be deleted. The execution_handler is mandatory for a slash command and cannot be removed. \n" required: true - schema: description: '' $ref: '#/components/schemas/longid_regex' example: SLASH_COMMAND_ID in: path name: SLASH_COMMAND_ID description: Unique numeric identifier of the slash command. To learn how to retrieve this ID, see SLASH_COMMAND_ID in the Glossary page. required: true responses: '204': description: No Content. Command handler deleted successfully. '400': description: Bad Request. content: application/json: schema: type: object properties: message: type: string example: The request cannot be performed. Usually because of malformed parameter or missing parameter. '401': description: Unauthorized. content: application/json: schema: type: object properties: message: type: string example: Request was rejected because of invalid AuthToken. '403': description: Forbidden. content: application/json: schema: type: object properties: message: type: string example: The user does not have enough permission or possibly not an user of the respective organization to access the resource. '404': description: Invalid URL. content: application/json: schema: type: object properties: message: type: string example: The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL. '405': description: Method Not Allowed. content: application/json: schema: type: object properties: message: type: string example: The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method. '406': description: Not Acceptable. content: application/json: schema: type: object properties: message: type: string example: The response has been received but the requested response type is not supported by the browser. '429': description: Too many requests. content: application/json: schema: type: object properties: message: type: string example: Too many requests within a certain time frame. '500': description: Internal Server Error. content: application/json: schema: type: object properties: message: type: string example: Cliq server encountered an error which prevents it from fulfilling the request. security: - Cliq_Auth: - ZohoCliq.Commands.UPDATE tags: - slashcommands components: schemas: update-slash-command-request-body: type: object description: Payload for updating a slash command. All fields are optional; only the fields provided will be updated. properties: execution_url: type: string maxLength: 225 description: '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. ' example: https://api.yourcompany.com/cliq/commands/updated-handler name: type: string maxLength: 30 description: '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: type: string maxLength: 128 description: '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: type: string maxLength: 300 description: '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: type: object description: "Updated options map. Options are additional properties which can alter the output of a /command based on the user's requirements.
\nMaximum size: 5 key-value pairs.
\n\nExample syntax:
\n
{\"options\": {\"location\": \"City to check weather for\", \"unit\": \"Temperature unit: celsius or fahrenheit\"}}
\n" additionalProperties: type: string maxLength: 100 scope: type: string enum: - organization - team - personal description: "Updated access scope of the slash command. Determines who can see and use the command.
\nAllowed values:
\n\n" team_ids: type: array maxItems: 4 description: '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. ' items: type: integer image: type: string maxLength: 204800000 description: "Updated base64 encoded image used as the command icon. This icon will be displayed next to the command in the slash command picker.
\nImage requirements:
\n\n" max_suggestions: type: integer maximum: 5 description: 'Updated maximum number of autocomplete suggestions that can be selected by the user when the command is typed.
Maximum value: 5 suggestions ' example: 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 create-slash-command-request-body: type: object description: Payload for creating a new slash command. required: - name - hint - scope properties: execution_type: type: string enum: - deluge - webhook description: "Defines how the command executes its handlers.
\n\n" example: deluge execution_url: type: string maxLength: 225 description: '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. ' example: https://api.yourcompany.com/cliq/commands/handler name: type: string maxLength: 30 description: '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: type: string maxLength: 128 description: '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: type: string maxLength: 300 description: '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: type: object description: "Options are additional properties which can alter the output of a /command based on the user's requirements.
\nMaximum size: 5 key-value pairs.
\n\nExample syntax:
\n
{\"options\": {\"location\": \"City to check weather for\", \"unit\": \"Temperature unit: celsius or fahrenheit\"}}
\n" additionalProperties: type: string maxLength: 100 scope: type: string enum: - organization - team - personal description: "Access scope of the slash command. Determines who can see and use the command.
\nAllowed values:
\n \n" team_ids: type: array maxItems: 4 description: '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. ' items: type: integer image: type: string maxLength: 204800000 description: "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.
\nImage requirements:
\n\n" max_suggestions: type: integer maximum: 5 description: 'Maximum number of autocomplete suggestions that can be selected by the user when the command is typed.

Maximum value: 5 suggestions ' example: name: greet hint: Send a greeting message 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 v3-exehandler-create: type: object description: Payload for creating a new handler. For Deluge commands, provide `type` and `script`. For Webhook commands, provide `type` and `permissions`. required: - type properties: type: type: string enum: - execution_handler - suggestion_handler description: "Type of the handler to create. Accepted values:
\n\n" script: type: string description: '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: type: array maxItems: 5 description: "List of data attributes to forward to your server in the webhook payload when the handler fires.
\nNote: Applicable only for Webhook commands. Do not pass permissions for Deluge commands - use script instead.
\nMaximum: 5 permissions per handler.
\nAllowed values:\n\nRefer to the permissions availability table in the Create a handler endpoint for per-handler availability.\n" items: type: string enum: - attachments - chat - location - user COMMAND_HANDLER_TYPE_regex: type: string enum: - execution_handler - suggestion_handler description: 'Name of a slash command handler. Accepted values: execution_handler (fires on command invocation), suggestion_handler (fires to generate autocomplete suggestions). ' v3-exehandler-edit: type: object description: Payload for updating an existing handler. For Deluge commands, provide `script`. For Webhook commands, provide `permissions`. properties: script: type: string description: 'Updated Deluge script source code for the handler.
Maximum size: 250KB
Note: Applicable only for Deluge commands. ' permissions: type: array maxItems: 5 description: '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. ' items: type: string enum: - attachments - chat - location - user base64_regex: type: string description: Base64-encoded pagination or sync token used for cursor-based pagination and incremental data sync. SlashCommandResponse: type: object description: Slash Commands API response envelope. properties: url: type: string type: type: string data: type: object additionalProperties: true 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 list-all-slash-commands-response: type: object description: Response schema for listing slash commands. properties: url: type: string example: /api/v3/commands type: type: string example: command sync_token: type: string description: Token for incremental sync. Pass this in the next request to retrieve only commands updated since this response. example: MTB8MTc3NzM2MDM5OTQ5Mnw= next_token: type: string description: Pagination token for the next page of results. data: type: array items: type: object properties: name: type: string id: type: string handlers: type: array items: type: object properties: type: type: string creator: type: object properties: name: type: string id: type: string execution_type: type: string example: deluge hint: type: string status: type: string example: enabled type: type: string example: custom description: type: string scope: type: string enum: - organization - team - personal max_suggestions: type: integer options: type: object additionalProperties: type: string 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) longid_regex: type: string description: Numeric long integer identifier used to reference platform components such as Commands, Functions, Widgets, Message Actions, Schedulers, and Extensions. securitySchemes: Cliq_Auth: type: oauth2 x-authorization-example: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f flows: implicit: authorizationUrl: https://accounts.zoho.com/oauth/v2/auth scopes: ZohoCliq.Bots.READ: Read Bot Information ZohoCliq.Bots.CREATE: Create Bots ZohoCliq.Bots.UPDATE: Update Bots ZohoCliq.Bots.DELETE: Delete Bots ZohoCliq.Webhooks.CREATE: Post messages to conversations via webhooks ZohoCliq.BotMessages.CREATE: Send messages via bot incoming webhooks ZohoCliq.Channels.UPDATE: Update Channel Settings externalDocs: description: Find out more about Zoho Cliq APIs V3 url: https://www.zoho.com/cliq/help/restapi/v3/