Metadata APIs

The Module Metadata API retrieves metadata for a specific module, including:

  • Fields (all available fields in the module)
  • Layouts
  • Related lists

Module Metadata

Purpose

To fetch metadata for a module, specify its API name (e.g., Leads, Accounts, Deals) in the request. Use the GET - Modules API to retrieve the available module API names. 

Endpoints

  • GET /settings/modules/{module_API_name}

Request Details

Request URL

{api-domain}/crm/{version}/settings/modules/{module_api_name}

Header

Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52

Scope

ZohoCRM.settings.ALL or 
ZohoCRM.settings.modules.{operation_type}

Possible operation types

ALL - Full data access
READ - Get module data

Note

  • Refer to the key api_name in the JSON data while accessing the resource. Every module, field, and related lists will have an API name, which you can use in the third-party integrations. For example, if you want to access the Leads module, use “Leads" which is the api_name every time you access the resource. The Zoho CRM generates an API name internally while creating a custom module, custom field, or related list label. Please note that you cannot alter the API Names for the default modules, fields, and related lists. You can change the API names only for custom modules, fields, and related lists.
  • The generated API name can contain only alphabets, numbers, and underscores. The API name should start with an alphabet and should not have two consecutive underscores or end with an underscore.
  • The response contains only those modules that the user's profile has permission to view.
  • New modules are added when a new file upload / image upload fields are added to a module.

Parameters

  • statusstring, optional

    The status parameter can be used to retrieve specific types of modules. 
    Possible values:

    • Possible values:
    • user_hidden - Modules that are hidden from the user.
    • system_hidden - Modules that are hidden by the system.
    • scheduled_for_deletion - Modules that are scheduled to be deleted.
    • visible - Modules that are visible to the user.

    For example, status = user_hidden,system_hidden can be used to retrieve all modules that are hidden to user and system.

Sample Request

Copiedcurl "https://www.zohoapis.com/crm/v8/settings/modules/Leads"
-X GET
-H "Authorization: Zoho-oauthtoken 1000.8cb99dxxxxxxxxxxxxx9be93.9b8xxxxxxxxxxxxxxxf"
Copiedresponse = invokeurl
[
	url: "https://www.zohoapis.com/crm/v8/settings/modules/Leads"
	type: GET
	connection:"crm_oauth_connection"
];
info response;

Response JSON

  • global_search_supportedBoolean

    Represents if the current module has global search support.

    Possible values:

    • true: The current module has global search support.
    • false: The current module does not have global search support.
  • deletableBoolean

    Describes if the user can delete a record in the current module.

    Possible values:

    • true: The user can delete a record in the current module.
    • false: The user cannot delete a record in the current module.
  • descriptionstring

    Represents the description of the module, if any.

  • creatableBoolean

    Represents if the user can create records in the current module.

    Possible values:

    • true: The user can create records in the current module.
    • false: The user cannot create records in the current module.
  • inventory_template_supportedBoolean

    Represents the module supports inventory template. The value will be true only for Quotes, Invoices, Purchase Orders, and Sales Orders modules.

    Possible values:

    • true: The current module supports inventory template.
    • false: The current module does not support inventory template.
  • modified_timedate and time in ISO8601 format

    Represents the date and time of when the module properties were last modified.

  • plural_labelstring

    Represents the plural form of the module name. For example: Leads.

  • singular_labelstring

    Represents the singular form of the module name. For example: Lead.

  • has_more_profilesBoolean

    Represents whether more profiles have access to the module. By default, the Module Metadata API lists up to 50 profiles in the "profiles" key. If there are more than 50 profiles, this value will be true; if there are 50 or fewer, it will be false.

  • access_typestring

    Specifies the module's access type. 
    Possible values:

    • org_based - Default setting, allowing access at an organizational level.
    • team_based - Access is restricted to team-level permissions (if the Team Space feature is enabled).
  • private_profile JSON array

    Represents the profiles available in the Teams module you have created.

  • recycle_bin_on_deleteBoolean

    Represents whether records in the module can be moved to the recycle bin upon deletion.

  • web_link string

    This key is related to web tabs, which are treated as modules. Web tabs can be created from either of the two sources: Links or Widgets. The value of this key will be the URL of the web tab (in the case of Links) or the widget's URL (in the case of Widgets).

  • presence_sub_menuBoolean

    Represents if the module has a submenu. For instance, Tasks in Calls module is a submenu.

    Possible values:

    • true: The current module has a submenu.
    • false: The current module does not have a submenu.
  • triggers_supportedBoolean

    Represents if the module supports triggers from custom buttons, workflows, approval etc.

    Possible values:

    • true: The current module supports triggers. For instance, Contacts, Accounts,and so on.
    • false: The current module does not support triggers. For instance, Activities, Feeds, and so on.
  • idstring

    Represents the unique ID of the module. For instance, 4150868000000002173

  • lookupableboolean

    Specifies if the module can be used as a lookup field in other modules.

  • visibilityinteger

    Represents the visibility of the module to the current user.

    • 2- The module is hidden in the UI, but is available in the API response
    • 1- The module is visible
    • 0- The module is hidden
    • -1 - The module is unavailable/hidden by the system itself due to the downgrading of the plan.
  • convertableBoolean

    Describes if the user can convert the record into another type of record. For example: Convert Leads into Deals.

    Possible values:

    • true: The user can convert the records in the current module into another type of record.
    • false: The user cannot convert the records in the current module into another type of record.
  • viewableBoolean

    Represents if the user can view the records in the current module.

    Possible values:

    • true: The user can view the records in the current module.
    • false: The user cannot view the records in the current module.
  • editableBoolean

    Describes if the user can edit a record in the current module.

    Possible values: 

    true: The user can edit a record in the current module.
    false: The user cannot edit a record in the current module.

  • emailTemplate_supportBoolean

    Represents if the module supports the usage of the email templates.

    Possible values:

    • true: The module has email template support.
    • false: The module does not have email template support.
  • api_supportedBoolean

    Describes if the current module is accessible via API.

    Possible values:

    • true: The current module is accessible via API. For instance, Leads, Quotes.
    • false: The current module is not accessible via API. For instance, Feeds, Documents, and so on.
  • profilesJSON array

    Each object in the array represents the details of the profile that has access to the module. 

    For example: {
    "name": "Administrator",
    "id": "4150868000000026011"
    },

  • filter_supportedBoolean

    Represents if the module supports custom filters besides the system-defined ones in a custom view.

    Possible values: 

    • true: The current module has custom-filter support.
    • false: The current module does not have custom-filter support.
  • show_as_tabBoolean

    Represents if the module is displayed as a tab in the CRM UI.

    Possible values:

    • true: The module is displayed as a tab in the CRM UI. For instance, Contacts, Accounts, and so on.
    • false: The module is not displayed as a tab in the CRM UI. For instance, Tasks, linking modules, and so on.
  • web_linkstring

    Represents the web link of the module, if any. For instance, https://extensions.zoho.com/plugin/facebook

  • sequence_numberinteger

    Represents the position of the module in the CRM.

  • api_namestring

    Represents the API name of the module. Example: Leads.

  • quick_createBoolean

    Represents if the module supports quick create.

    Possible values:

    • true: The user can add records using quick create in the current module. For instance, Contacts, Accounts, and so on.
    • false: The user cannot add records using quick create in the current module. For instance, Feeds, Forecasts, and so on.
  • modified_byJSON object

    Represents the name and ID of the user who last modified the module properties. 

    For example:

     "modified_by": {
    "name": "Patricia Boyle",
    "id": "4150868000000225013"
    }

  • generated_typestring

    Represents how the module was created.
    Possible values:

    • default: It is a standard module. For instance, Leads, Contacts, Accounts, and so on.
    • linking:  It is a linking module i.e., MxN modules
    • subform: It is a line item subform in one of the inventory modules.
    • web: It is a web-tab widget.
    • custom: It is a custom module.
  • feeds_requiredBoolean

    Represents if feeds is enabled for the module.

    Possible values:

    true: Feeds is enabled for the current module.
    false: Feeds is not enabled for the current module.

  • scoring_supportedBoolean

    Represents if the records of the module qualify for the scoring process, if there is one.

    Possible values:

    true: The current module qualifies for the scoring process.
    false: The current module does not qualify for the scoring process.

  • webform_supportedBoolean

    Represents if the records in the module can be created via web forms.

    Possible values:

    true: The current module supports webforms.
    false: The current module does not support webforms.

  • argumentsJSON array

    Represents the parameters for the link used in Web-tab. Each object represents display name and the value of the argument.

    For example:

    "arguments": [
    {
    "name": "sample",
    "value": "users.city"
    }
    ]

  • module_namestring

    Represents the unique module name.

  • business_card_field_limitinteger

    Represents the number of fields you can have in the business card details.
    Note: Business card details are displayed on the "Details View" page of a record. This is also the information shown when you hover over a lookup field.

  • custom_viewJSON object

    Represents the details of the custom views created for this module. If you pass the custom view ID, the response contains the details of that custom view. Otherwise, the system fetches the details of the default view in that module.

  • parent_moduleJSON object

    Represents the details of the parent module, if any. For instance, Sales Orders is the parent module for Ordered Items(subform module).

  • statusstring

    The status parameter can be used to retrieve specific types of modules.

    Possible values:

    • user_hidden - Modules that are hidden from the user.
    • system_hidden - Modules that are hidden by the system.
    • scheduled_for_deletion - Modules that are scheduled to be deleted.
    • visible - Modules that are visible to the user.
  • sub_menu_availableBoolean

    Represents if sub menu option is available for the module or not.

  • actual_plural_labelstring

    Represents the actual plural form of the module name.

  • actual_singular_label string

    Represents the actual singular form of the module name.

  • lookupableBoolean

    Represents if the module can be used as a lookup field in other modules.

  • isBlueprintSupportedBoolean

    Represents if the module supports blueprints.

  • profile_countinteger

    Represents the number of profiles that have access to the module.

  • public_fields_configuredBoolean

    Represents if public fields are configured for the module.

Possible Errors

  • INVALID_MODULEHTTP 400

    The API name of the module is invalid.
    Resolution: The key resource_path_index in the response gives the index at which the error has occurred. The index 0 starts after the version number in the URL. So, if the index in the response is 2, it means the error is three places after the version number.

  • INVALID_REQUEST_METHODHTTP 400

    The http request method type is not a valid one
    Resolution: You have specified an invalid HTTP method to access the API URL. Specify a valid request method. Refer to the Endpoints section.

  • AUTHORIZATION_FAILEDHTTP 400

    User does not have sufficient privilege to read module details.
    Resolution: The user does not have the permission to retrieve module details. Contact your system administrator.

  • OAUTH_SCOPE_MISMATCHHTTP 401

    Unauthorized
    Resolution: Client does not have ZohoCRM.settings.modules.READ scope. Create a new client with valid scope. Refer to the Scope section.

  • NO_PERMISSIONHTTP 403

    Permission denied to read
    Resolution: The user does not have permission to read records. Contact your system administrator.

  • INVALID_URL_PATTERNHTTP 404

    Please check if the URL trying to access is a correct one
    Resolution: The request URL specified is incorrect. Specify a valid request URL. Refer to the Request URL section.

  • INTERNAL_ERRORHTTP 500

    Internal Server Error
    Resolution: Unexpected and unhandled exception in the server. Contact support team.

Sample Response

Copied{
    "modules": [
        {
            "private_profile": null,
            "global_search_supported": true,
            "activity_badge": "Enabled",
            "$field_states": [
                "convert_scheduler"
            ],
            "recycle_bin_on_delete": true,
            "plural_label": "Leads",
            "presence_sub_menu": true,
            "chart_view": false,
            "id": "5725767000000002175",
            "per_page": 10,
            "$properties": [
                "$approval_state",
                "$wizard_connection_path",
                "$converted_detail",
                "$cpq_executions",
                "$currency_symbol",
                "$zia_owner_assignment",
                "$review",
                "$review_process",
                "$approval",
                "$in_merge",
                "$process_flow",
                "$orchestration",
                "$pathfinder",
                "$stop_processing",
                "$data_source_details",
                "$zia_visions",
                "$layout_id",
                "$editable",
                "$field_states",
                "$locked_for_me",
                "$sharing_permission"
            ],
            "visibility": 1,
            "sub_menu_available": true,
            "profiles": [
                {
                    "name": "Administrator",
                    "id": "5725767000000026011"
                },
                {
                    "name": "Standard",
                    "id": "5725767000000026014"
                },
                {
                    "name": "asd",
                    "id": "5725767000000871001"
                }
            ],
            "$on_demand_properties": [
                "$blocked_reason",
                "$client_portal_invited",
                "$client_portal_permission"
            ],
            "kanban_view_supported": true,
            "web_link": null,
            "lookup_field_properties": {
                "fields": [
                    {
                        "sequence_number": 1,
                        "api_name": "Full_Name",
                        "id": "5725767000000002631"
                    },
                    {
                        "sequence_number": 2,
                        "api_name": "Company",
                        "id": "5725767000000002591"
                    },
                    {
                        "sequence_number": 3,
                        "api_name": "Owner",
                        "id": "5725767000000002589"
                    },
                    {
                        "sequence_number": 4,
                        "api_name": "Email",
                        "id": "5725767000000002599"
                    },
                    {
                        "sequence_number": 5,
                        "api_name": "Last_Name",
                        "id": "5725767000000002595"
                    },
                    {
                        "sequence_number": 6,
                        "api_name": "Created_Time",
                        "id": "5725767000000002627"
                    },
                    {
                        "sequence_number": 7,
                        "api_name": "Total_Notes_Added",
                        "id": "5725767000005100020"
                    }
                ]
            },
            "viewable": true,
            "api_name": "Leads",
            "public_fields_configured": false,
            "module_name": "Leads",
            "chart_view_supported": true,
            "custom_view": {
                "display_value": "All Leads",
                "created_time": null,
                "access_type": "public",
                "criteria": {
                    "comparator": "equal",
                    "field": {
                        "api_name": "Converted__s",
                        "id": "5725767000000323001"
                    },
                    "type": "value",
                    "value": false
                },
                "system_name": "ALLVIEWS",
                "sort_by": null,
                "created_by": null,
                "shared_to": null,
                "default": true,
                "modified_time": "2025-01-23T22:46:41-08:00",
                "name": "All Open Leads",
                "system_defined": true,
                "modified_by": {
                    "name": "Patricia Boyle",
                    "id": "5725767000000411001"
                },
                "id": "5725767000000087501",
                "fields": [
                    {
                        "api_name": "Full_Name",
                        "_pin": false,
                        "id": "5725767000000002631"
                    },
                    {
                        "api_name": "Company",
                        "_pin": false,
                        "id": "5725767000000002591"
                    },
                    {
                        "api_name": "Owner",
                        "_pin": false,
                        "id": "5725767000000002589"
                    },
                    {
                        "api_name": "Email",
                        "_pin": false,
                        "id": "5725767000000002599"
                    },
                    {
                        "api_name": "Last_Name",
                        "_pin": false,
                        "id": "5725767000000002595"
                    },
                    {
                        "api_name": "Created_Time",
                        "_pin": false,
                        "id": "5725767000000002627"
                    },
                    {
                        "api_name": "Total_Notes_Added",
                        "_pin": false,
                        "id": "5725767000005100020"
                    }
                ],
                "category": "public_views",
                "last_accessed_time": "2025-04-15T22:15:13-07:00",
                "locked": false,
                "sort_order": null,
                "favorite": null
            },
            "parent_module": {},
            "status": "visible",
            "has_more_profiles": false,
            "access_type": "org_based",
            "kanban_view": false,
            "deletable": true,
            "description": null,
            "creatable": true,
            "filter_status": true,
            "modified_time": "2025-04-24T10:32:20-07:00",
            "actual_plural_label": "Leads",
            "lookupable": true,
            "isBlueprintSupported": true,
            "related_list_properties": {
                "sort_by": null,
                "fields": [
                    "Full_Name",
                    "Company",
                    "Email",
                    "Lead_Source",
                    "Lead_Status",
                    "Phone"
                ],
                "sort_order": null
            },
            "convertable": true,
            "editable": true,
            "actual_singular_label": "Lead",
            "display_field": "Full_Name",
            "search_layout_fields": [
                "Owner",
                "Company",
                "Email",
                "Phone",
                "Lead_Source",
                "Full_Name"
            ],
            "show_as_tab": true,
            "sequence_number": 2,
            "singular_label": "Lead",
            "api_supported": true,
            "quick_create": true,
            "modified_by": {
                "name": "Patricia Boyle",
                "id": "5725767000000411001"
            },
            "generated_type": "default",
            "feeds_required": false,
            "arguments": [],
            "profile_count": 3,
            "business_card_field_limit": 5,
            "territory": {
                "name": "All Territories",
                "id": "0",
                "subordinates": false
            }
        }
    ]
}