Create Blueprint
Purpose
To create a new blueprint for a specific module and layout in your Zoho CRM organization.
Endpoints
- POST /settings/blueprints
Request Details
Request URL
{api-domain}/crm/{version}/settings/blueprints
Header
Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52
Scope
ZohoCRM.settings.blueprint.ALL
(or)
ZohoCRM.settings.blueprint.CREATE
Sample Request
Copiedcurl "https://www.zohoapis.com/crm/v8/settings/blueprints"
-H "Authorization: Zoho-oauthtoken 1000.8cb99dxxxxxxxxxxxxx9be93.9b8xxxxxxxxxxxxxxxf"
-d @createblueprint.json
-X POSTRequest JSON
The Blueprints JSON array is the root element within which all blueprint details required to create a blueprint must be specified. Only one blueprint object can be included in the array per request. The Blueprints JSON array may include the following keys:
- ownersJSON array, optional
Specify the details of the blueprint owners. This setting can be used to define which users, roles, groups, record owners, or portal user types are associated with or allowed access to the blueprint.
Conditional requirement: This field is mandatory when continuous is set to true.
- resourcesJSON array, mandatory
Specify the resource details of the blueprint owner. Each resource identifies an entity such as a user, role, or group associated with the selected owner type.
- idstring, mandatory
Specify the ID of the blueprint owner resource.
- typestring, mandatory
Specify the owner type.
Possible values: users, role, group, record_owner, portal_user_type.
This determines how the resources array is interpreted.
- criteriaJSON object, optional
Specify the details of the blueprint entry criteria. Entry criteria determine which records are eligible to enter the blueprint process.
- comparatorstring, optional
Specify the comparator used in the criteria expression.
Possible values: is, isn't, contains, doesn't contain, starts with, ends with, is empty, is not empty. - fieldJSON object, optional
Specify the field details configured in the criteria. This field is evaluated to decide whether the record satisfies the blueprint entry condition.
- api_namestring, optional
Specify the API name of the field used in the criteria.
- idstring, mandatory
Specify the ID of the field used in the criteria. Use the Fields Metadata API to retrieve this ID.
- typestring, optional
Specify what the criteria is based on, such as comparison against a fixed value or another field.
- valuestring, optional
Specify the value configured for the criteria comparison when the condition is value-based.
- chart_dataJSON object, optional
Contains the details of the visual chart representation of the configured blueprint. This section stores the canvas layout used in the Blueprint editor, including node positions, visual connectors, and canvas dimensions.
Keep chart_data consistent with the logical structure defined in states, transitions, and connections.
Important: Although optional in schema, chart_data is practically required before first activation so that the blueprint renders correctly in the editor.
- nodesJSON array, optional
Contains details of the nodes of the blueprint. Nodes represent the states of the blueprint as displayed in the visual editor.
- position_xinteger, mandatory
Position of the node on the x-axis within the blueprint canvas.
- position_yinteger, mandatory
Position of the node on the y-axis within the blueprint canvas.
- stateJSON object, mandatory
Contains details of the state mapped to the node. In Zoho CRM, a state represents a stage or condition in the business process.
- api_namestring, mandatory
Specify the API name of the state represented by the node.
- canvas_sizeJSON object, mandatory
Use canvas_size to configure the height and width of the canvas on which the blueprint chart data is displayed in the Blueprint editor.
- widthinteger, mandatory
Width of the blueprint chart canvas.
- heightinteger, mandatory
Height of the blueprint chart canvas.
- connectionsJSON array, optional
Details of the visual connections between nodes in the blueprint chart. These connections represent the graphical flow between states and are associated with transitions.
- fromJSON object, mandatory
Details of the source side of the visual connection.
- end_pointJSON object, mandatory
Details of the end point of the source side of the connection in the blueprint canvas.
- position_xdouble, mandatory
Position of the source point on the x-axis.
- position_yinteger, mandatory
Position of the source point on the y-axis.
- direction_xinteger, mandatory
Horizontal direction of the connection line from the source point.
- direction_yinteger, mandatory
Vertical direction of the connection line from the source point.
- stateJSON object, mandatory
Contains state details of the source node from which the connection begins.
- api_namestring, mandatory
Specify the API name of the source state.
- api_namestring, mandatory
Specify the API name of the visual connection.
- toJSON object, mandatory
Details of the target side of the visual connection.
- end_pointJSON object, mandatory
End point details of the target side of the connection.
- position_xinteger, mandatory
Position of the target point on the x-axis.
- position_ydouble, mandatory
Position of the target point on the y-axis.
- direction_xinteger, mandatory
Horizontal direction of the connection line toward the target point.
- direction_yinteger, mandatory
Vertical direction of the connection line toward the target point.
- stateJSON object, mandatory
Contains state details of the target node to which the connection points.
- api_namestring, mandatory
Specify the API name of the target state.
- transitionJSON object, mandatory
Details of the transition mapped with the connection. In Zoho CRM, a transition is the action that moves a record from one state to another.
- api_namestring, mandatory
Specify the API name of the transition associated with the connection.
- namestring, optional
Name of the transition shown in the process design.
- continuous Boolean, optional
Specifies whether the blueprint runs in continuous mode.
Set to true for continuous execution behavior where records can continue through configured process paths. Set to false for one-time progression behavior through the configured path.
- moduleJSON object, mandatory
Contains the details of the module for which the blueprint is configured. A blueprint in Zoho CRM always applies to a specific module and governs the records in that module.
Provide either id or api_name based on metadata availability. Use the Modules Metadata API to retrieve valid module identifiers.
- api_namestring, optional
Specify the API name of the module.
- idstring, mandatory
Specify the ID of the module. Use the Modules Metadata API to retrieve this ID.
- precedenceinteger, optional
Specify the precedence of the module where applicable in the configuration.
- pipelineJSON object, optional
Contains the details of the pipeline for which the blueprint is configured. This is applicable only for the Deals module and is used when the blueprint should apply only to records in a specific sales pipeline.
- idstring, mandatory
Specify the ID of the pipeline.
- api_namestring, optional
Specify the API name of the pipeline.
- display_valuestring, optional
Specify the display value of the pipeline as shown in the CRM UI.
- transitionsJSON array, optional
Specify the transitions associated with the blueprint. A transition is the action or step that moves a record from one state to another. Transitions can be manual or automatic, may require inputs during execution, and can trigger automation after completion.
- criteriaJSON object, optional
Specify the criteria configured for displaying or allowing the transition. This determines whether the transition is available based on record data.
- comparatorstring, mandatory
Specify the comparator of the criteria.
- fieldJSON object, mandatory
Specify field details configured in the criteria.
- api_namestring, optional
Specify the API name of the field.
- idstring, mandatory
Specify the ID of the field. Use the Fields Metadata API to retrieve this ID.
- typestring, mandatory
Specify whether the criteria compares against a value or another field.
- valuestring, optional
Specify the value used in the criteria comparison.
- trigger_typestring, mandatory
Specify whether the transition is triggered manually or automatically.
Possible values: manual, automatic.
Automatic transitions move the record after a configured wait time in the current state. - moduleJSON object, optional
Specify module details for which the transition is configured.
- api_namestring, optional
Specify the API name of the module.
- idstring, mandatory
Specify the ID of the module. Use the Modules Metadata API to retrieve this ID.
- layoutJSON object, optional
Specify the details of the layout context for the transition.
- api_namestring, optional
Specify the API name of the layout.
- namestring, optional
Specify the name of the layout.
- idstring, optional
Specify the ID of the layout. Use the Layouts Metadata API to retrieve this ID.
- descriptionstring, optional
Description of the transition and its business purpose within the process flow.
- ownersJSON array, optional
Specify the details of the owners for whom the transition is accessible. This controls who can execute the transition.
- resourcesJSON array, optional
Specify the details of the transition owners.
- idstring, optional
Specify the ID of the transition owner.
- typestring, optional
Specify the type of the owner.
Possible values: users, role, group, record_owner, portal_user_type.
- commonBoolean, optional
Specify whether the transition is a common transition. A common transition can be made available from multiple source states.
- include_statesJSON array, optional
Specify the details of the common source states for the transition when the transition is configured as common.
- stateJSON object, optional
Specify the state details of the common source.
- namestring, optional
Specify the name of the state.
- api_namestring, optional
Specify the API name of the state.
- during_inputsJSON array, optional
List of the fields configured during the transition. This defines what a user must do at the exact moment they click a transition button to advance a record. It acts as a mandatory validation checkpoint that enforces data collection and process compliance before the record updates to the next stage.
- validation_filterJSON object, optional
Details of validation configured for the during-transition fields. If validation fails, the transition cannot be completed.
- criteriaJSON object, mandatory
Criteria to validate the field.
- comparatorstring, mandatory
Comparator of the criteria.
- fieldJSON object, mandatory
Field details of the criteria.
- api_namestring, optional
Specify the API name of the field.
- idstring, mandatory
Specify the ID of the field. Use the Fields Metadata API to retrieve this ID.
- typestring, mandatory
Type of the criteria to denote whether it is checked against a field value or another field.
- valuestring, mandatory
Value against which the field value should be checked.
- validation_messagestring, mandatory
Message to be displayed when validation fails.
- sequenceinteger, mandatory
Position in which the field should be displayed in the transition popup.
- fieldJSON object, mandatory
Details of the field configured in during transition.
- api_namestring, optional
Specify the API name of the field.
- idstring, mandatory
Specify the ID of the field. Use the Fields Metadata API to retrieve this ID.
- optionalBoolean, optional
Denotes whether the input is optional for the user during the transition.
- typestring, mandatory
Type of the configured input.
Possible values: field, related_list, info, attachment, tags, notes, checklist, widget, kiosk.
- api_namestring, mandatory
Specify the API name of the transition.
- namestring, mandatory
Specify the name of the transition.
- transition_typestring, mandatory
Specify the type of transition relationship.
Possible values: standalone_transition, parallel_transition, child_transition. - actionsJSON array, optional
List of actions configured to be triggered after the transition is completed. These actions correspond to the automation that runs in the After Transition stage.
- namestring, optional
Specify the name of the action associated with the transition.
- detailsJSON object, optional
Specify the details of the configured action.
- namestring, optional
Specify the name of the action.
- idstring, optional
Specify the ID of the action. Retrieve this value using the corresponding action-specific Get API based on the selected action type.
- idstring, optional
Specify the ID of the action associated with the transition.
- typestring, optional
Specify the type of the action.
Possible values: field_updates, add_tags, remove_tags, email_notifications, sms, whatsapp, tasks, create_record, add_meeting, schedule_call, convert, webhooks, functions.
- color_codestring, optional
Specify a visual color code associated with the transition for display or editor representation.
- statesJSON array, optional
Specify the list of states associated with the blueprint. A state represents a stage or condition in the business process through which a record moves.
- namestring, optional
Specify the display name of the state.
- api_namestring, mandatory
Specify the API name of the state.
- pick_list_valueJSON object, optional
Specify the picklist option mapped with the state. In Zoho CRM, blueprint states are generally tied to the values of the selected process field.
- idstring, mandatory
Specify the ID of the picklist option. Use the Picklist Values API or the Fields Metadata API to retrieve this ID.
- actual_valuestring, optional
Specify the actual value of the mapped picklist option.
- moduleJSON object, optional
Specify the module details for which the state is configured.
- api_namestring, optional
Specify the API name of the module.
- idstring, mandatory
Specify the ID of the module. Use the Modules Metadata API to retrieve this ID.
- state_escalationJSON object, optional
Specify escalation alert configuration for the state. State escalation can trigger actions if a record remains in the state longer than the configured duration.
- periodstring, mandatory
Specify the time period type.
Possible values: days, hours, minutes, business_days, business_hours. - valueinteger, mandatory
Specify the numeric value of the defined period.
- trigger_detailsJSON array, mandatory
Specify trigger configurations for the state escalation.
- periodstring, mandatory
Specify the period type for the trigger.
Possible values: days, hours, minutes. - execute_typestring, mandatory
Specify when the trigger executes relative to the escalation point.
Possible values: before, on, after. - valueinteger, mandatory
Specify the time value for trigger execution.
- actionsJSON array, optional
Specify the list of actions configured for the trigger.
- detailsJSON object, optional
- escalate_toJSON array, optional
- idstring, mandatory
- typestring, mandatory
Possible values: user, role, group, team_user, profile.
- idstring, mandatory
Specify the ID of the configured escalation action. Retrieve this value using the corresponding action-specific Get API based on the selected action type.
- namestring, optional
- idstring, optional
- namestring, optional
- typestring, optional
Possible values: sla, email_notifications, tasks, field_updates, webhooks, functions, circuits, whatsapp, sms.
- layoutJSON object, mandatory
Specify the details of the layout for which the blueprint is configured. Layout mapping ensures that the process applies within the intended record design and business context.
Provide either id or api_name based on metadata availability. Use the Layouts Metadata API to retrieve valid layout identifiers.
- api_namestring, optional
Specify the API name of the layout.
- namestring, optional
Specify the name of the layout.
- idstring, mandatory
Specify the ID of the layout. Use the Layouts Metadata API to retrieve this ID.
- fieldJSON object, mandatory
Specify the details of the field for which the blueprint is configured. This is the process field whose values are mapped to the states of the blueprint, such as Stage or Status.
The selected field must be a Blueprint-supported process field (typically picklist/stage-like). Provide either id or api_name based on metadata availability. Use the Fields Metadata API to retrieve valid field identifiers.
- api_namestring, optional
Specify the API name of the field for which the blueprint is configured.
- field_labelstring, optional
Specify the label of the field for which the blueprint is configured.
- idstring, mandatory
Specify the ID of the field for which the blueprint is configured. Use the Fields Metadata API to retrieve this ID.
- api_namestring, optional
Specify the API name of the blueprint.
- namestring, mandatory
Specify the name of the blueprint. This is the human-readable label used to identify the process configuration in Zoho CRM.
- descriptionstring, optional
Specify the description of the blueprint, including its business purpose, scope, or any important notes about how the process should be used.
- connectionsJSON array, optional
Specify the logical connections between states mapped with transitions. These connections define how a transition moves a record from one source state to a target state.
Each connection should reference a transition defined in the transitions array.
- to_stateJSON object, mandatory
Specify the target state associated with the connection.
- namestring, optional
Specify the name of the target state.
- api_namestring, mandatory
Specify the API name of the target state.
- api_namestring, mandatory
Specify the API name of the connection.
- transitionsJSON object, mandatory
Specify the transition associated with the connection.
- api_namestring, mandatory
Specify the API name of the transition.
- namestring, optional
Specify the name of the transition.
- precedenceinteger, optional
Specify the precedence of the transition where multiple transitions are associated with similar paths.
- from_stateJSON object, mandatory
Specify the source state associated with the connection.
- namestring, optional
Specify the name of the source state.
- api_namestring, mandatory
Specify the API name of the source state.
Sample Input
Copied{
"blueprints": [
{
"owners": [
{
"resources": [
{
"id": "4794410000000642001"
}
],
"type": "users"
}
],
"criteria": {
"comparator": "greater_than",
"field": {
"api_name": "Annual_Revenue",
"id": "4794410000000000581"
},
"type": "value",
"value": "10000"
},
"continuous": false,
"module": {
"api_name": "Leads",
"id": "4794410000000000125",
"precedence": 1
},
"transitions": [
{
"trigger_type": "manual",
"module": {
"api_name": "Leads",
"id": "4794410000000000125"
},
"layout": {
"api_name": "Standard__s",
"name": "Standard",
"id": "4794410000000095055"
},
"description": "Transition to Attempted",
"common": false,
"api_name": "Transition_1",
"name": "Move to Attempted",
"transition_type": "standalone_transition"
},
{
"trigger_type": "manual",
"module": {
"api_name": "Leads",
"id": "4794410000000000125"
},
"layout": {
"api_name": "Standard__s",
"name": "Standard",
"id": "4794410000000095055"
},
"description": "Transition to Contacted",
"common": false,
"api_name": "Transition_2",
"name": "Move to Contacted",
"transition_type": "standalone_transition"
}
],
"states": [
{
"name": "-None-",
"api_name": "State_1",
"pick_list_value": {
"id": "4794410000000002345",
"actual_value": "-None-"
},
"module": {
"api_name": "Leads",
"id": "4794410000000000125"
}
},
{
"name": "Attempted to Contact",
"api_name": "State_2",
"pick_list_value": {
"id": "4794410000000002341",
"actual_value": "Attempted to Contact"
},
"module": {
"api_name": "Leads",
"id": "4794410000000000125"
}
},
{
"name": "Contacted",
"api_name": "State_3",
"pick_list_value": {
"id": "4794410000000002335",
"actual_value": "Contacted"
},
"module": {
"api_name": "Leads",
"id": "4794410000000000125"
}
}
],
"layout": {
"api_name": "Standard__s",
"name": "Standard",
"id": "4794410000000095055"
},
"field": {
"api_name": "Lead_Status",
"field_label": "Lead Status",
"id": "4794410000000000575"
},
"api_name": "Lead_Blueprint_Demo",
"name": "Lead Blueprint Demo",
"description": "Sample blueprint",
"connections": [
{
"to_state": {
"name": "Attempted to Contact",
"api_name": "State_2"
},
"api_name": "Transition_1",
"transitions": {
"api_name": "Transition_1",
"name": "Move to Attempted",
"precedence": 1
},
"from_state": {
"name": "-None-",
"api_name": "State_1"
}
},
{
"to_state": {
"name": "Contacted",
"api_name": "State_3"
},
"api_name": "Transition_2",
"transitions": {
"api_name": "Transition_2",
"name": "Move to Contacted",
"precedence": 1
},
"from_state": {
"name": "Attempted to Contact",
"api_name": "State_2"
}
}
]
}
]
}Possible Errors
- INVALID_DATAHTTP 400
The value given is invalid.
Resolution: The value for transition_type is invalid. Use one of the possible values. - INVALID_DATAHTTP 400
The value given is invalid.
Resolution: Provide a valid transition ID configured in the blueprint. - DEPENDENT_MISMATCHHTTP 400
The module or layout of this transition is different from the blueprint.
Resolution: Ensure the transition belongs to the same module and layout as the blueprint. - INVALID_DATAHTTP 400
The field ID provided for blueprint configuration is invalid.
Resolution: Provide a valid field ID from the specified module. - NOT_ALLOWEDHTTP 400
The given field not supported for blueprint creation.
Resolution: Use a supported picklist field type for blueprint creation. - INVALID_DATAHTTP 400
The layout ID given seems to be invalid.
Resolution: Provide a valid layout ID associated with the module. - CANNOT_PROCEEDHTTP 400
Given state is not connected to any other state
Resolution: Ensure all states are connected through valid transitions. - DUPLICATE_DATAHTTP 400
Transition name already exists
Resolution: Provide a unique name for each transition. - DUPLICATE_DATAHTTP 400
There is already a state with the same pick list value used in the blueprint
Resolution: Ensure each state uses a unique picklist value. - LIMIT_EXCEEDEDHTTP 400
The maximum number of blueprint allowed to be created is already reached
Resolution: Delete an existing blueprint before creating a new one. - INVALID_DATAHTTP 400
There is already a blueprint with this name.
Resolution: Provide a unique name for the blueprint. - MANDATORY_NOT_FOUNDHTTP 400
Required field not found.
Resolution: Blueprint name not provided in the request. Provide a valid, unique name for the blueprint. - INVALID_DATAHTTP 400
The module ID provided for the blueprint is invalid.
Resolution: Provide a valid module ID. - INVALID_DATAHTTP 400
The module API name provided is invalid.
Resolution: Provide a valid module API name. - MANDATORY_NOT_FOUNDHTTP 400
Module details are missing in the blueprint request.
Resolution: Provide the module object with valid details.
Sample Response
Copied{
"blueprints": [
{
"code": "SUCCESS",
"details": {
"id": "4794410000000971073"
},
"message": "Blueprint created successfully",
"status": "success"
}
]
}