# Zoho

Zoho is a suite of cloud applications including CRM, email marketing, and collaboration tools, enabling businesses to automate and scale operations

- **Category:** crm
- **Auth:** OAUTH2
- **Composio Managed App Available?** Yes
- **Tools:** 12
- **Triggers:** 0
- **Slug:** `ZOHO`
- **Version:** 20260319_00

## Frequently Asked Questions

### How do I set up custom OAuth credentials for Zoho CRM?

For a step-by-step guide on creating and configuring your own Zoho CRM OAuth credentials with Composio, see [How to create OAuth credentials for Zoho CRM](https://composio.dev/auth/zoho).

## Tools

### Convert Zoho CRM Lead

**Slug:** `ZOHO_CONVERT_ZOHO_LEAD`

Converts a lead into a contact, account, and optionally a deal in Zoho CRM.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `lead_id` | string | Yes | The unique ID of the lead to convert. |
| `assign_to` | string | No | User ID to assign as the owner of the new contact/account. |
| `overwrite` | boolean | No | Whether to overwrite the account name in the contact if it already exists and the company names mismatch. |
| `account_id` | string | No | ID of an existing account to associate with the converted lead. |
| `contact_id` | string | No | ID of an existing contact to associate with the converted lead. |
| `notify_lead_owner` | boolean | No | Notify the lead owner about the conversion via email. |
| `notify_new_entity_owner` | boolean | No | Notify the new owner of the contact/account via email. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Zoho CRM Record

**Slug:** `ZOHO_CREATE_ZOHO_RECORD`

Creates new records in a specified module in Zoho CRM. Bulk operations may partially succeed — inspect each item's status field in the response, as some records may be created while others fail.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | A list of dictionaries representing the records to be created. Each dictionary contains field API names as keys and their values. Required fields depend on the module (e.g., Last_Name is required for Leads and Contacts, and MUST have a non-empty value). For lookup fields (Parent_Id, What_Id, Who_Id, etc.), use simplified format: {"id": "<record_id>", "module": "<ModuleName>"} (e.g., {"id": "123456", "module": "Contacts"}) or full API format: {"id": "<record_id>", "module": {"api_name": "<ModuleName>"}}. To assign an owner, use the field "Owner" with a valid Zoho user ID dict (e.g., {"id": "<user_id>"}); incorrect field names silently fail to assign ownership. For Tasks, include only minimal required fields — extra layout-dependent fields can cause INVALID_DATA errors. |
| `lar_id` | string | No | The layout ID or lead assignment rule ID (lar_id) to be used if required. |
| `trigger` | array | No | List of triggers to invoke during record creation (e.g., ['workflow', 'blueprint']). Enabling triggers can cause side effects (emails sent, other records modified) — only include when such effects are explicitly desired, especially in bulk operations. |
| `module_api_name` | string | Yes | The API name of the module to create a record in. Standard modules use PascalCase (e.g., 'Leads', 'Contacts', 'Accounts', 'Deals', 'Tasks', 'Campaigns'). Custom modules must use their exact API name as configured in Zoho CRM - this is NOT the display name. To find a custom module's API name: Go to Setup > Developer Hub > APIs and SDKs > API Names, then select the custom module from the dropdown. The API name is typically in the format 'CustomModule1', 'CustomModule2', etc., or a name assigned when the module was created. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Zoho CRM Tag

**Slug:** `ZOHO_CREATE_ZOHO_TAG`

Creates a new tag in Zoho CRM for a specific module. Tags help organize and categorize CRM records. Each module can have up to 100 tags, and each record can have up to 10 tags assigned. Tags must have unique names within a module and can be assigned custom colors from a predefined palette. Creating a tag does not apply it to any records; use separate update actions to assign the tag to records. Use this action to create standardized tags for lead scoring, deal stages, customer segments, or any custom categorization needs in your CRM workflow.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | The name of the tag to create. Maximum 25 characters. Cannot contain '<', '>', commas, or emojis. |
| `color_code` | string | No | Hex color code for the tag. Must be one of the 13 allowed colors: #F17574 (red), #F48435 (orange), #E7A826 (yellow), #A8C026 (lime), #63C57E (green), #1DB9B4 (teal), #57B1FD (blue), #879BFC (indigo), #D297EE (purple), #FD87BD (pink), #969696 (gray), #658BA8 (slate), #B88562 (brown). Defaults to orange (#F48435). |
| `module_api_name` | string | Yes | The API name of the Zoho CRM module to create the tag in. Supported modules: Leads, Accounts, Contacts, Deals, Campaigns, Tasks, Cases, Events, Calls, Solutions, Products, Vendors, Price Books, Quotes, Sales Orders, Purchase Orders, Invoices, and custom modules. Value is case-sensitive and must exactly match the CRM API name (e.g., 'Leads' not 'leads' or 'Lead'). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Zoho CRM Module Fields Metadata

**Slug:** `ZOHO_GET_MODULE_FIELDS`

Retrieves field metadata for a Zoho CRM module including API names, data types, permissions, and configuration details. Use this tool to discover correct field names and types before creating or updating records, avoiding INVALID_DATA errors. Returns information about standard fields, custom fields, lookup fields, picklist options, and field-level permissions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `type` | string | No | Filter fields by usage type. Values: 'all' (both used and unused fields) or 'unused' (unused fields only). If not specified, returns all used fields. |
| `include` | string | No | Include additional permission details in the response. Use 'allowed_permissions_to_update' to get default field permissions (read-only, read-write, hidden). |
| `field_unique_id` | string | No | The unique ID of a specific field to retrieve. When provided, only that single field's metadata is returned. If not specified, all fields for the module are returned. |
| `module_api_name` | string | Yes | The API name of the module to retrieve field metadata for. Examples: 'Leads', 'Contacts', 'Accounts', 'Deals', 'Tasks', 'Cases', 'Events', 'Calls', etc. For custom modules, use the exact API name as configured in Zoho CRM. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Zoho CRM Related Lists Metadata

**Slug:** `ZOHO_GET_RELATED_LISTS`

Retrieves related list metadata for a Zoho CRM module to discover correct api_name values. Use this before updating related records to avoid INVALID_DATA errors from incorrect related_list_api_name. Returns api_name, display_label, href, and other details for each related list available in the module.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `layout_id` | string | No | Optional layout ID to filter related lists by specific layout. If not specified, returns related lists for all layouts of the module. |
| `module_api_name` | string | Yes | The API name of the module to retrieve related list metadata for. Examples: 'Leads', 'Contacts', 'Accounts', 'Deals', 'Tasks', etc. This must be a valid module API name in Zoho CRM. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Zoho CRM Related Records

**Slug:** `ZOHO_GET_RELATED_RECORDS`

Fetch related-list records (e.g., Notes, Attachments, Emails) for a Zoho CRM parent record using related_list_api_name. Use ZOHO_GET_RELATED_LISTS first to discover the correct api_name for the related list you want to access. Supports pagination for large result sets (up to 2,000 records with page/per_page, unlimited with page_token).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | string | No | Comma-separated list of specific related record IDs to retrieve. Use this to fetch only certain related records instead of all related records. Example: '4876876000000636001,4876876000000636002' |
| `page` | integer | No | Page number to retrieve (default: 1). Without page_token, only the first 2,000 records are accessible using page/per_page pagination. Maximum page number is floor(2000/per_page). Do not use together with page_token. |
| `fields` | string | Yes | Comma-separated API names of the fields to retrieve (required by Zoho for this API). Specify the field names from the related list module whose details you want to receive. Example: 'Note_Title,Note_Content,Created_Time' for Notes. Field names vary by related list type - check module field definitions to ensure correct names. |
| `sort_by` | string ("id" | "Created_Time" | "Modified_Time") | No | Valid fields for sorting related records. |
| `per_page` | integer | No | Number of records per page (default and maximum: 200). Applies to both page and page_token pagination. |
| `converted` | string ("false" | "true" | "both") | No | Filter for converted status (applicable to certain related lists). |
| `record_id` | string | Yes | The unique identifier of the parent record for which to retrieve related records. This is the ID of the record in the specified module. |
| `page_token` | string | No | Token-based pagination parameter to fetch records beyond the 2,000-record discrete limit. Use the info.next_page_token from the previous response. Cannot be used together with page. |
| `sort_order` | string ("asc" | "desc") | No | Sort order for related records. |
| `module_api_name` | string | Yes | The API name of the parent module containing the record. Examples: 'Leads', 'Contacts', 'Accounts', 'Deals', 'Tasks', etc. This must be a valid module API name in Zoho CRM. |
| `related_list_api_name` | string | Yes | The API name of the related list to retrieve (e.g., 'Notes', 'Attachments', 'Emails'). IMPORTANT: Use the ZOHO_GET_RELATED_LISTS action first to discover the correct api_name for the related list you want to access. Using an incorrect api_name will result in INVALID_DATA errors. Example values: 'Notes', 'Attachments', 'Activities', 'Emails', 'Campaigns', 'Products', 'Open_Activities', 'Closed_Activities', 'Invited_Events'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Zoho CRM Records

**Slug:** `ZOHO_GET_ZOHO_RECORDS`

Retrieves records from a specified module in Zoho CRM. Notes: - Discrete (page/per_page) pagination is limited to the first 2,000 records. To retrieve records beyond this, use token-based pagination via page_token from the previous response's info.next_page_token. - Do not use page together with page_token. - You cannot use cvid together with sort_by.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | string | No | Comma-separated record IDs to fetch specific records. Note: This parameter is ignored when page_token is provided. |
| `cvid` | integer | No | Custom view ID to filter the records. Cannot be used together with sort_by. Note: This parameter is ignored when page_token is provided. |
| `page` | integer | No | Page number to retrieve. Without page_token, only the first 2,000 records are accessible using page/per_page. Maximum page number is floor(2000/per_page). Do not use together with page_token. |
| `fields` | string | No | Comma-separated API names of the fields to retrieve (max 50). At least one field must be specified (empty string not allowed). Field names are module-specific. Common fields: First_Name, Last_Name, Email, Phone, Mobile. For Leads: Company, Lead_Status, Lead_Source. For Accounts: Account_Name, Website, Industry. For Contacts: Account_Name, Mailing_Street. For Deals: Deal_Name, Amount, Stage, Closing_Date. Invalid or cross-module field names silently produce missing columns rather than explicit errors. |
| `sort_by` | string ("id" | "Created_Time" | "Modified_Time") | No | Valid fields for sorting Zoho CRM records. |
| `per_page` | integer | No | Number of records per page (default and max is 200). Applies to both page and page_token pagination. |
| `page_token` | string | No | Token-based pagination parameter to fetch records beyond the 2,000-record discrete limit. Use the info.next_page_token from the previous response. Cannot be used together with page. |
| `sort_order` | string ("asc" | "desc") | No | Sort order for records. |
| `module_api_name` | string | Yes | The API name of the module to retrieve records from. Common supported modules: Leads, Contacts, Accounts, Deals, Tasks, Events, Calls, Products, Quotes, Sales_Orders, Purchase_Orders, Invoices, Campaigns, Vendors, Price_Books, Cases, Solutions, Notes. IMPORTANT: 'Activities' is NOT a supported module - use 'Tasks', 'Events', or 'Calls' instead. Must be the exact API name, not the UI display label — mismatches silently return empty results instead of an error. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Zoho CRM Users

**Slug:** `ZOHO_GET_ZOHO_USERS`

Tool to retrieve users from Zoho CRM. Use when you need to fetch user information such as IDs, names, emails, roles, or status for setting Owner fields or performing user-related operations in CRM workflows.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | string | No | Comma-separated list of user IDs to retrieve specific users. Maximum of 100 user IDs can be specified at once. |
| `page` | integer | No | Page number to retrieve for paginated results. Default is 1. |
| `type` | string | No | The type of users to retrieve. Supported values: 'AllUsers' (all users including inactive), 'ActiveUsers' (only active users), 'DeactiveUsers' (only deactivated users), 'ConfirmedUsers' (users who have confirmed their account), 'NotConfirmedUsers' (users who have not confirmed their account), 'DeletedUsers' (deleted users), 'ActiveConfirmedUsers' (active and confirmed users), 'AdminUsers' (users with admin privileges), 'ActiveConfirmedAdmins' (active confirmed admin users), 'CurrentUser' (the currently authenticated user). If not specified, returns all active confirmed users. |
| `per_page` | integer | No | Number of users to retrieve per page. Maximum is 200. Default is 200. |
| `if_modified_since` | string | No | Retrieve users modified after this timestamp. Use ISO 8601 format (e.g., '2024-01-15T10:00:00+00:00'). This will be sent as the 'If-Modified-Since' header to the API. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Zoho CRM Modules

**Slug:** `ZOHO_LIST_MODULES`

Lists all available Zoho CRM modules (standard + custom) to reliably select module API names/IDs for operations. Use this tool before calling other module-specific operations to ensure correct module_api_name selection and avoid INVALID_MODULE errors. Particularly useful for discovering custom modules and their exact API names.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Attachments for Zoho CRM Record

**Slug:** `ZOHO_LIST_RECORD_ATTACHMENTS`

Tool to list attachment metadata (id, File_Name, Size, Created_Time, etc.) for a specific Zoho CRM record. Use when you need to identify attachments before downloading them via other means. This returns metadata only, not the actual file content.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to retrieve (default: 1). |
| `fields` | string | No | Comma-separated API names of attachment fields to retrieve. Common fields: id, File_Name, Size, Created_Time, Modified_Time, Owner, Parent_Id, Created_By, Modified_By, $editable, $file_id, $se_module. |
| `per_page` | integer | No | Number of attachments per page (default and maximum: 200). |
| `record_id` | string | Yes | The unique ID of the record to list attachments for. |
| `module_api_name` | string | Yes | The API name of the module containing the record. Examples: 'Leads', 'Contacts', 'Accounts', 'Deals', etc. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Search Zoho CRM Records

**Slug:** `ZOHO_SEARCH_ZOHO_RECORDS`

Search for records within a Zoho CRM module using server-side queries. Use when you need to find specific records by criteria, email, phone, or keyword instead of listing all records. This avoids pagination limits and performs efficient server-side filtering.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to retrieve (default: 1). Maximum 2,000 records are accessible via search API. Maximum page number is floor(2000/per_page). |
| `word` | string | No | Global search keyword across multiple fields in the module. Cannot be used together with criteria, email, or phone parameters. |
| `email` | string | No | Search for this email address across all email fields in the module. Cannot be used together with criteria, phone, or word parameters. |
| `phone` | string | No | Search for this phone number across all phone fields in the module. Cannot be used together with criteria, email, or word parameters. |
| `fields` | string | No | Comma-separated API names of fields to return in the response. If not specified, all fields are returned. Example: 'First_Name,Last_Name,Email,Phone'. |
| `criteria` | string | No | Advanced search using field conditions. Single condition format: (Field_API_Name:operator:value). Multiple conditions format: ((Field1:operator:value)and/or(Field2:operator:value)). Operators: equals, starts_with, in, not_equal, greater_equal, greater_than, less_equal, less_than, between. Max 10 criteria. Example: ((Last_Name:equals:Smith)and(Email:starts_with:john)). Field names must be valid API names for the module. For datetime fields (e.g., Created_Time, Modified_Time), values MUST include timezone offset in format yyyy-MM-ddTHH:mm:ss+HH:mm. Example: (Created_Time:greater_than:2026-01-01T00:00:00+00:00). Datetime values without timezone offset (e.g., 2026-01-01T00:00:00) will be automatically normalized to UTC (+00:00). Cannot be used with email, phone, or word parameters. |
| `per_page` | integer | No | Number of records per page. Default and maximum is 200. |
| `module_api_name` | string | Yes | The API name of the module to search in. Standard modules use PascalCase (e.g., 'Leads', 'Contacts', 'Accounts', 'Deals'). Custom modules must use their exact API name as configured in Zoho CRM. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Related Records in Zoho CRM

**Slug:** `ZOHO_UPDATE_RELATED_RECORDS`

Associates or updates relationships between records across different modules in Zoho CRM. This action creates or modifies relationships between a parent record and related records. Common use cases: - Associate Leads/Contacts with Campaigns (with member status) - Link Products to Deals/Quotes/Accounts - Connect Contacts to Accounts - Associate Services with Appointments Use ZOHO_GET_RELATED_LISTS to discover valid related_list_api_name values for your module. Maximum 100 related records can be updated per API call. If module_api_name, record_id, related_list_api_name, or child record IDs in data do not match Zoho CRM's related-list configuration exactly, associations may silently succeed (no error returned) but the relationship will not be created.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | A list of related records to associate with the parent record. Each dictionary must include: 1) 'id' (string, mandatory): The unique ID of the related record to associate. 2) Optional fields to update (e.g., 'Member_Status' for campaign members). Maximum 100 related records per API call. Example: [{'id': '5725767000000327001', 'Member_Status': 'Active'}] |
| `record_id` | string | Yes | The unique identifier (ID) of the parent record to which related records will be associated. This is the numeric ID from Zoho CRM (e.g., '5725767000000649013'). |
| `module_api_name` | string | Yes | The API name of the parent module where the record resides. Common modules: 'Leads', 'Contacts', 'Accounts', 'Deals', 'Products', 'Quotes'. Use the exact module API name (PascalCase, e.g., 'Contacts' not 'contacts'). |
| `related_list_api_name` | string | Yes | The API name of the related list/module to update relationships with. Common examples: 'Campaigns' (for Lead-Campaign relations), 'Products' (for Deal-Product relations), 'Contacts' (for Account-Contact relations). Use ZOHO_GET_RELATED_LISTS action to discover valid related list API names for a specific module. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Zoho CRM Record

**Slug:** `ZOHO_UPDATE_ZOHO_RECORD`

Updates existing records in a specified module in Zoho CRM. Supports updating up to 100 records per API call. Use field API names (not display names) for all field updates. The 'id' field is mandatory for each record.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | A list of dictionaries representing the records to be updated. Each record MUST include the 'id' field with the record ID to update. Update up to 100 records per API call. Use field API names as keys (not display names). For multi-module lookup fields (What_Id, Who_Id), use format: {'field_name': {'id': 'record_id', 'module': {'api_name': 'ModuleName'}}}. Example: [{'id': '123456789', 'Last_Name': 'Smith', 'What_Id': {'id': '987654321', 'module': {'api_name': 'Accounts'}}}] For owner assignment, use the owner field API name (e.g., 'Owner') with value {'id': '<zoho_user_id>'}; using email or display name will fail. Only include fields you intend to modify — unintended fields will overwrite existing data. Read-only or layout-restricted fields cause INVALID_DATA errors. |
| `lar_id` | string | No | Assignment rule ID to trigger during record update (for applicable modules like Leads). Use the Get Assignment Rules API to obtain the lar_id. |
| `trigger` | array | No | List of automation triggers to execute during update. Valid values: ['workflow', 'approval', 'blueprint', 'pathfinder', 'orchestration']. Pass empty array [] to skip all automation. If not specified, default triggers execute. Example: ['workflow', 'blueprint'] |
| `module_api_name` | string | Yes | The API name of the module to update records in. Standard modules use PascalCase (e.g., 'Leads', 'Contacts', 'Accounts', 'Deals', 'Tasks', 'Campaigns'). Custom modules must use their exact API name as configured in Zoho CRM. |
| `skip_feature_execution` | array | No | Features to skip during the update. Example: [{'name': 'cadences'}] to skip cadence execution |
| `apply_feature_execution` | array | No | Features to execute during the update. Example: [{'name': 'layout_rules'}] or [{'name': 'criteria_validation_rule'}] |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upload Attachment to Zoho CRM Record

**Slug:** `ZOHO_UPLOAD_ATTACHMENT`

Tool to upload a file or attach a URL as an Attachment to a specific Zoho CRM record. Use when you need to store files (PDFs, documents, images) or link external URLs in a record's Attachments section. Either upload a file via multipart/form-data or provide an attachmentUrl, but not both in a single request.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file` | object | No | File to upload as an attachment. Either 'file' or 'attachmentUrl' must be provided, but not both. |
| `title` | string | No | Title for the attachment. Only relevant when using 'attachmentUrl'. This field is ignored when uploading a file via 'file'. |
| `record_id` | string | Yes | The unique ID of the record to attach the file or URL to. |
| `attachmentUrl` | string | No | URL of a file to attach as a link. Either 'file' or 'attachmentUrl' must be provided, but not both. When using attachmentUrl, you can optionally provide a 'title'. |
| `module_api_name` | string | Yes | The API name of the module containing the record. Examples: 'Leads', 'Contacts', 'Accounts', 'Deals', etc. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
