openapi: 3.0.0 info: title: Slash Commands version: '3.0' description: |

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

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.

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.

externalDocs: description: Find out more about Zoho Cliq Platform APIs url: https://www.zoho.com/cliq/help/platform/getting-started-with-cliq-platform.html 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: |

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:

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 Click to expand
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 above) and message is a human-readable explanation of what went wrong.

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.

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.

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.

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 Click to expand
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 above) and message is a human-readable explanation of what went wrong.

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.

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 Click to expand
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 above) and message is a human-readable explanation of what went wrong.

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.

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 Click to expand
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 above) and message is a human-readable explanation of what went wrong.

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: |

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

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

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 Click to expand
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 above) and message is a human-readable explanation of what went wrong.

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:

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 Click to expand
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 above) and message is a human-readable explanation of what went wrong.

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.
Allowed values: 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.

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 Click to expand
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 above) and message is a human-readable explanation of what went wrong.

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.
Allowed values: 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.

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 Click to expand
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 above) and message is a human-readable explanation of what went wrong.

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.
Allowed value: Note: Only the suggestion_handler can be deleted. The execution_handler is mandatory for a slash command and cannot be removed. 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: 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 ExecutionRecordResponse: type: object description: Response envelope for slash command handler execution records. properties: status: type: string description: HTTP status text of the response. example: OK code: type: integer description: HTTP status code of the response. example: 200 data: type: object properties: logs: type: array description: List of execution log entries. items: type: object properties: id: type: string description: Unique identifier of the execution record. time: type: integer format: int64 description: Epoch timestamp (ms) when the handler was executed. executionTime: type: integer description: Time taken to execute the handler, in milliseconds. output: type: string description: Output returned by the handler script (serialized as a JSON string). user: type: object description: Details of the user who triggered the command execution. properties: id: type: string zoho_user_id: type: string first_name: type: string last_name: type: string email: type: string example: status: OK code: 200 data: logs: - user: zoho_user_id: '697322516' last_name: Raman email: priya.raman@zylker.com first_name: Priya id: '697322516' output: '{}' time: 1770628936698 executionTime: 183 id: d37d7b20-0598-11f1-8871-fb8adfa476c7 - user: zoho_user_id: '697322516' last_name: Raman email: priya.raman@zylker.com first_name: Priya id: '697322516' output: '{}' time: 1770628887877 executionTime: 179 id: b66694e0-0598-11f1-b90c-55af9267af80 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:
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.
Note: Applicable only for Webhook commands. Do not pass permissions for Deluge commands - use script instead.
Maximum: 5 permissions per handler.
Allowed values: Refer to the permissions availability table in the Create a handler endpoint for per-handler availability. items: type: string enum: - attachments - chat - location - user longid_regex: type: string description: Numeric long integer identifier used to reference platform components such as Commands, Functions, Widgets, Message Actions, Schedulers, and Extensions. 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). 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.
Maximum size: 5 key-value pairs.
Example syntax:
{"options": {"location": "City to check weather for", "unit": "Temperature unit: celsius or fahrenheit"}}
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.
Allowed values:
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.
Image requirements:
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 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 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.
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.
Maximum size: 5 key-value pairs.
Example syntax:
{"options": {"location": "City to check weather for", "unit": "Temperature unit: celsius or fahrenheit"}}
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.
Allowed values:
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.
Image requirements:
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 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) base64_regex: type: string description: Base64-encoded pagination or sync token used for cursor-based pagination and incremental data sync. securitySchemes: Cliq_Auth: type: oauth2 x-authorization-example: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f flows: implicit: authorizationUrl: '' scopes: Commands.UPDATE: Update slash command configurations and manage command handlers. Commands.READ: Read slash command configurations, handlers, and execution logs. Commands.DELETE: Permanently delete slash commands and their handlers. Commands.CREATE: Create new custom Slash Commands.