Openapi
ZenBPM OpenAPI (1.9.0)
Download OpenAPI specification:Download
REST API for ZenBPM
Deploy a new process definition
Request Body schema: application/octet-streamrequired
BPMN process definition file (.bpmn format only, size limited by httpServer.maxRequestBodyBytes, 10 MiB by default)
Responses
Response samples
- 200
- 201
- 400
- 405
- 413
- 415
- 500
- 502
{- "processDefinitionKey": 4503599627370498
}Get list of process definitions
query Parameters
| page | integer <int32> >= 1 Default: 1 Example: page=1 Page number (1-based indexing) |
| size | integer <int32> [ 1 .. 100 ] Default: 10 Example: size=10 Number of items per page (max 100) |
| onlyLatest | boolean Default: false If true, returns only the latest version of each process definition grouped by bpmnProcessId |
| sortBy | string Enum: "name" "bpmnProcessId" "bpmnProcessName" "version" "key" Sort field |
| sortOrder | string Enum: "asc" "desc" Sort direction |
| bpmnProcessId | string Filter by BPMN process ID to get all versions of a specific process |
| search | string Filter by BPMN process ID or BPMN process name (partial match) |
Responses
Response samples
- 200
- 400
- 405
- 500
{- "items": [
- {
- "key": 4503599627370498,
- "version": 1,
- "bpmnProcessId": "loan-application"
}, - {
- "key": 4503599627370499,
- "version": 2,
- "bpmnProcessId": "loan-application"
}, - {
- "key": 4503599627370500,
- "version": 1,
- "bpmnProcessId": "credit-check"
}
], - "page": 1,
- "size": 10,
- "count": 2,
- "totalCount": 2
}Get process definition
path Parameters
| processDefinitionKey required | integer <int64> Example: 4503599627370498 |
Responses
Response samples
- 200
- 400
- 404
- 405
- 500
{- "key": 4503599627370498,
- "version": 1,
- "bpmnProcessId": "loan-application",
- "bpmnData": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bpmn:definitions>\n <bpmn:process id=\"loan-application\" name=\"Loan Application Process\" isExecutable=\"true\">\n ...\n </bpmn:process>\n</bpmn:definitions>\n"
}Get running and incident counts per BPMN element
path Parameters
| processDefinitionKey required | integer <int64> Example: 4503599627370498 |
Responses
Response samples
- 200
- 400
- 404
- 405
- 500
- 502
{- "partitions": [
- {
- "partition": 1,
- "items": {
- "Task_CheckApplication": {
- "activeCount": 5,
- "incidentCount": 2
}, - "Task_CreditCheck": {
- "activeCount": 3,
- "incidentCount": 1
}
}
}, - {
- "partition": 2,
- "items": {
- "Task_CheckApplication": {
- "activeCount": 4,
- "incidentCount": 0
}, - "Task_CreditCheck": {
- "activeCount": 6,
- "incidentCount": 3
}
}
}
]
}Get process definition statistics
query Parameters
| page | integer <int32> >= 1 Default: 1 Page number (1-based indexing) |
| size | integer <int32> [ 1 .. 100 ] Default: 10 Number of items per page (max 100) |
| onlyLatest | boolean Default: false If true, returns only the latest version of each process definition |
| bpmnProcessIdIn | Array of strings Filter by BPMN process ID |
| bpmnProcessDefinitionKeyIn | Array of integers <int64> [ items <int64 > ] Filter by process definition key |
| search | string Search by BPMN process ID or BPMN process name (partial match) |
| sortBy | string Enum: "name" "bpmnProcessId" "version" "instanceCount" "incidentCount" Sort field |
| sortOrder | string Enum: "asc" "desc" Sort direction |
Responses
Response samples
- 200
- 400
- 405
- 500
- 502
{- "partitions": [
- {
- "partition": 1,
- "totalCount": 2,
- "items": [
- {
- "key": 4503599627370498,
- "version": 3,
- "bpmnProcessId": "loan-application",
- "name": "Loan Application Process",
- "bpmnResourceName": "loan-application.bpmn",
- "instanceCounts": {
- "total": 1250,
- "active": 45,
- "completed": 1180,
- "terminated": 20,
- "failed": 5,
- "withIncident": 0
}
}, - {
- "key": 4503599627370510,
- "version": 1,
- "bpmnProcessId": "order-fulfillment",
- "name": "Order Fulfillment",
- "bpmnResourceName": "order-fulfillment.bpmn",
- "instanceCounts": {
- "total": 890,
- "active": 120,
- "completed": 750,
- "terminated": 15,
- "failed": 5,
- "withIncident": 2
}
}
]
}
], - "page": 1,
- "size": 10,
- "count": 2,
- "totalCount": 2
}Create a new process instance
Request Body schema: application/jsonrequired
| processDefinitionKey | integer <int64> Start the process instance using bpmn process definition identified by processDefinitionKey. ( Takes priority ) |
| bpmnProcessId | string Start the process instance using latest bpmn process definition identified by bpmnProcessId. |
| variables | object or null |
| historyTimeToLive | string Duration for which process instance data are kept in storage after the process instance ends. If omitted the default will be picked up from engine configuration. (1d8h, 1M5d8h) |
| businessKey | string Business key of the process instance used mainly for correlating process instance to the business entity. |
Responses
Request samples
- Payload
{- "processDefinitionKey": 4503599627370498,
- "variables": {
- "customerId": "customer-456",
- "amount": 1000,
- "applicationDate": "2025-08-22"
}
}Response samples
- 201
- 400
- 404
- 405
- 413
- 415
- 500
- 502
{- "key": 4503599627370501,
- "processDefinitionKey": 4503599627370498,
- "createdAt": "2025-08-22T14:30:25Z",
- "state": "active",
- "version": 1,
- "versionTag": "initial-release",
- "variables": {
- "customerId": "customer-456",
- "amount": 1000,
- "applicationDate": "2025-08-22"
}
}Get list of running process instances
query Parameters
| processDefinitionKey | integer <int64> Example: processDefinitionKey=4503599627370498 Key of the process definition |
| parentProcessInstanceKey | integer <int64> Example: parentProcessInstanceKey=1603294627315478 Key of the parent process instance |
| businessKey | string Business key of the process instance used mainly for correlating process instance to the business entity. |
| page | integer <int32> >= 1 Default: 1 Example: page=1 Page number (1-based indexing) |
| size | integer <int32> [ 1 .. 100 ] Default: 10 Example: size=10 Number of items per page |
| bpmnProcessId | string Filter by BPMN process ID (returns instances across all versions) |
| sortBy | string Enum: "createdAt" "key" "state" "businessKey" "bpmnProcessId" Sort field (applies globally across partitions) |
| sortOrder | string Enum: "asc" "desc" Sort direction |
| createdFrom | string <date-time> Filter - created after this date |
| createdTo | string <date-time> Filter - created before this date |
| state | string Enum: "active" "completed" "terminated" "failed" Filter by state |
| activityId | string Filter by current activity element ID |
| includeChildProcesses | boolean |
Responses
Response samples
- 200
- 400
- 405
- 500
- 502
{- "partitions": [
- {
- "partition": 1,
- "totalCount": 24,
- "items": [
- {
- "key": 4503599627370501,
- "processDefinitionKey": 4503599627370498,
- "bpmnProcessId": "loan-application",
- "version": 1,
- "versionTag": "initial-release",
- "createdAt": "2025-08-22T14:30:25Z",
- "state": "active",
- "incidentCount": 1,
- "variables": {
- "customerId": "customer-456",
- "amount": 1000,
- "applicationDate": "2025-08-22"
}
}, - {
- "key": 4503599627370505,
- "processDefinitionKey": 4503599627370498,
- "bpmnProcessId": "loan-application",
- "version": 1,
- "versionTag": "initial-release",
- "createdAt": "2025-08-22T15:10:12Z",
- "state": "active",
- "incidentCount": 0,
- "variables": {
- "customerId": "customer-789",
- "amount": 5000,
- "applicationDate": "2025-08-22"
}
}
]
}, - {
- "partition": 2,
- "totalCount": 18,
- "items": [
- {
- "key": 9007199254740992,
- "processDefinitionKey": 4503599627370498,
- "bpmnProcessId": "loan-application",
- "version": 1,
- "versionTag": "initial-release",
- "createdAt": "2025-08-22T15:45:33Z",
- "state": "active",
- "incidentCount": 2,
- "variables": {
- "customerId": "customer-101",
- "amount": 7500,
- "applicationDate": "2025-08-22"
}
}
]
}
], - "page": 1,
- "size": 10,
- "count": 3,
- "totalCount": 42
}Get state of a process instance selected by processInstanceKey
path Parameters
| processInstanceKey required | integer <int64> Example: 4503599627370501 |
Responses
Response samples
- 200
- 404
- 405
- 500
- 502
{- "key": 4503599627370501,
- "processDefinitionKey": 4503599627370498,
- "version": 1,
- "versionTag": "initial-release",
- "createdAt": "2025-08-22T14:30:25Z",
- "state": "active",
- "variables": {
- "customerId": "customer-456",
- "amount": 1000,
- "applicationDate": "2025-08-22",
- "taskAssignee": "john.doe",
- "currentStatus": "Application review"
}
}Update process instance variables
path Parameters
| processInstanceKey required | integer <int64> Example: 4503599627370501 |
Request Body schema: application/jsonrequired
| variables required | object |
Responses
Request samples
- Payload
{- "variables": {
- "orderAmount": 150,
- "approved": true,
- "reviewedBy": "john.doe",
- "reviewComment": "Approved after verification"
}
}Response samples
- 400
- 404
- 405
- 409
- 413
- 415
- 500
- 502
{- "code": "NOT_FOUND",
- "message": "Process instance with key 4503599627370501 not found"
}Delete a process instance variable
path Parameters
| processInstanceKey required | integer <int64> Example: 4503599627370501 |
| variableName required | string Example: temporaryFlag |
Responses
Response samples
- 400
- 404
- 405
- 409
- 500
- 502
{- "code": "NOT_FOUND",
- "message": "Process instance with key 4503599627370501 not found"
}Get list of running child process instances
path Parameters
| processInstanceKey required | integer <int64> Example: 4503599627370501 |
query Parameters
| page | integer <int32> >= 1 Default: 1 Example: page=1 Page number (1-based indexing) |
| size | integer <int32> [ 1 .. 100 ] Default: 10 Example: size=10 Number of items per page |
| sortBy | string Enum: "key" "state" Sort field (applies globally across partitions) |
| sortOrder | string Enum: "asc" "desc" Sort direction |
| state | string Enum: "active" "completed" "terminated" "failed" Filter by state |
Responses
Response samples
- 200
- 400
- 405
- 500
- 502
{- "partitions": [
- {
- "partition": 1,
- "totalCount": 2,
- "items": [
- {
- "key": 4503599627370501,
- "processDefinitionKey": 4503599627370498,
- "version": 1,
- "versionTag": "initial-release",
- "createdAt": "2025-08-22T14:30:25Z",
- "state": "active",
- "incidentCount": 1,
- "variables": {
- "customerId": "customer-456",
- "amount": 1000,
- "applicationDate": "2025-08-22"
}
}, - {
- "key": 4503599627370505,
- "processDefinitionKey": 4503599627370498,
- "version": 1,
- "versionTag": "initial-release",
- "createdAt": "2025-08-22T15:10:12Z",
- "state": "active",
- "incidentCount": 0,
- "variables": {
- "customerId": "customer-789",
- "amount": 5000,
- "applicationDate": "2025-08-22"
}
}
]
}, - {
- "partition": 2,
- "totalCount": 1,
- "items": [
- {
- "key": 9007199254740992,
- "processDefinitionKey": 4503599627370498,
- "version": 1,
- "versionTag": "initial-release",
- "createdAt": "2025-08-22T15:45:33Z",
- "state": "active",
- "incidentCount": 2,
- "variables": {
- "customerId": "customer-101",
- "amount": 7500,
- "applicationDate": "2025-08-22"
}
}
]
}
], - "page": 1,
- "size": 10,
- "count": 3,
- "totalCount": 3
}Get list of jobs for a process instance
path Parameters
| processInstanceKey required | integer <int64> Example: 4503599627370501 |
query Parameters
| page | integer <int32> >= 1 Default: 1 Example: page=1 Page number (1-based indexing) |
| size | integer <int32> [ 1 .. 100 ] Default: 10 Example: size=10 Number of items per page (max 100) |
Responses
Response samples
- 200
- 400
- 405
- 500
- 502
{- "items": [
- {
- "key": 4503599627370510,
- "elementId": "Task_CheckApplication",
- "type": "user-task",
- "processInstanceKey": 4503599627370500,
- "elementInstanceKey": 4503599627370900,
- "state": "active",
- "createdAt": "2025-08-22T14:30:26Z",
- "inputVariables": {
- "formKey": "loan-application-form",
- "assignee": "john.doe"
}
}, - {
- "key": 4503599627370511,
- "elementId": "Task_CreditCheck",
- "type": "service-task",
- "processInstanceKey": 4503599627370501,
- "elementInstanceKey": 4503599627370901,
- "state": "completed",
- "createdAt": "2025-08-22T14:32:15Z",
- "inputVariables": {
- "applicantId": "APP-12345",
- "creditScoreThreshold": 80
}, - "outputVariables": {
- "result": "approved",
- "score": 85
}
}
], - "page": 1,
- "size": 10,
- "count": 2,
- "totalCount": 2
}Get list of visited flow elements for a process instance
path Parameters
| processInstanceKey required | integer <int64> Example: 4503599627370501 |
query Parameters
| page | integer <int32> >= 1 Default: 1 Example: page=1 Page number (1-based indexing) |
| size | integer <int32> [ 1 .. 1000 ] Default: 10 Example: size=10 Number of items per page (max 1000) |
| sortBy | string Value: "createdAt" |
| sortOrder | string Enum: "asc" "desc" Sort direction |
Responses
Response samples
- 200
- 400
- 405
- 500
- 502
{- "items": [
- {
- "key": 4503599627370525,
- "elementId": "StartEvent_1",
- "elementType": "START_EVENT",
- "processInstanceKey": 4503599627370501,
- "createdAt": "2025-08-22T14:30:26Z"
}, - {
- "key": 4503599627370526,
- "elementId": "Flow_1",
- "elementType": "SEQUENCE_FLOW",
- "processInstanceKey": 4503599627370501,
- "createdAt": "2025-08-22T14:30:26Z"
}, - {
- "key": 4503599627370527,
- "elementId": "Task_CheckApplication",
- "elementType": "SERVICE_TASK",
- "processInstanceKey": 4503599627370501,
- "createdAt": "2025-08-22T14:30:27Z"
}
], - "page": 1,
- "size": 10,
- "count": 3,
- "totalCount": 3
}Get list of incidents for a process instance
path Parameters
| processInstanceKey required | integer <int64> Example: 4503599627370501 |
query Parameters
| state | string Enum: "resolved" "unresolved" Filter by incident state (omit to get all incidents) |
| page | integer <int32> >= 1 Default: 1 Example: page=1 Page number (1-based indexing) |
| size | integer <int32> [ 1 .. 100 ] Default: 10 Example: size=10 Number of items per page (max 100) |
Responses
Response samples
- 200
- 400
- 405
- 500
- 502
{- "items": [
- {
- "key": 4503599627370530,
- "elementInstanceKey": 4503599627370521,
- "elementId": "Task_CheckApplication",
- "processInstanceKey": 4503599627370501,
- "message": "Failed to assign task: User not found",
- "createdAt": "2025-08-22T14:35:10Z",
- "executionToken": 123456,
- "bpmnProcessId": "loan-application",
- "state": "unresolved"
}, - {
- "key": 4503599627370531,
- "elementInstanceKey": 4503599627370522,
- "elementId": "Task_CreditCheck",
- "processInstanceKey": 4503599627370501,
- "message": "External service unavailable",
- "createdAt": "2025-08-22T14:36:22Z",
- "resolvedAt": "2025-08-22T14:45:18Z",
- "executionToken": 123457,
- "bpmnProcessId": "loan-application",
- "state": "resolved"
}
], - "page": 1,
- "size": 10,
- "count": 2,
- "totalCount": 2
}Get message event subscriptions for a process instance
path Parameters
| processInstanceKey required | integer <int64> |
query Parameters
| page | integer <int32> >= 1 Default: 1 |
| size | integer <int32> [ 1 .. 100 ] Default: 10 |
| state | string (EventSubscriptionState) Enum: "active" "compensated" "compensating" "completed" "completing" "failed" "failing" "ready" "terminated" "terminating" "withdrawn" Filter by state (omit to list subscriptions in every state) |
Responses
Response samples
- 200
- 400
- 405
- 500
- 502
{- "items": [
- {
- "key": 0,
- "elementInstanceKey": 0,
- "elementId": "string",
- "processDefinitionKey": 0,
- "processInstanceKey": 0,
- "messageName": "string",
- "correlationKey": "string",
- "state": "active",
- "createdAt": "2019-08-24T14:15:22Z"
}
], - "page": 0,
- "size": 0,
- "count": 0,
- "totalCount": 0
}Get timer event subscriptions for a process instance
path Parameters
| processInstanceKey required | integer <int64> |
query Parameters
| page | integer <int32> >= 1 Default: 1 |
| size | integer <int32> [ 1 .. 100 ] Default: 10 |
| state | string (EventSubscriptionState) Enum: "active" "compensated" "compensating" "completed" "completing" "failed" "failing" "ready" "terminated" "terminating" "withdrawn" Filter by state (omit to list subscriptions in every state) |
Responses
Response samples
- 200
- 400
- 405
- 500
- 502
{- "items": [
- {
- "key": 0,
- "elementInstanceKey": 0,
- "elementId": "string",
- "processDefinitionKey": 0,
- "processInstanceKey": 0,
- "state": "active",
- "createdAt": "2019-08-24T14:15:22Z",
- "dueDate": "2019-08-24T14:15:22Z"
}
], - "page": 0,
- "size": 0,
- "count": 0,
- "totalCount": 0
}Get error event subscriptions for a process instance
path Parameters
| processInstanceKey required | integer <int64> |
query Parameters
| page | integer <int32> >= 1 Default: 1 |
| size | integer <int32> [ 1 .. 100 ] Default: 10 |
| state | string (EventSubscriptionState) Enum: "active" "compensated" "compensating" "completed" "completing" "failed" "failing" "ready" "terminated" "terminating" "withdrawn" Filter by state (omit to list subscriptions in every state) |
Responses
Response samples
- 200
- 400
- 405
- 500
- 502
{- "items": [
- {
- "key": 0,
- "elementInstanceKey": 0,
- "elementId": "string",
- "processDefinitionKey": 0,
- "processInstanceKey": 0,
- "errorCode": "string",
- "state": "active",
- "createdAt": "2019-08-24T14:15:22Z"
}
], - "page": 0,
- "size": 0,
- "count": 0,
- "totalCount": 0
}Get running and incident counts per BPMN element for a process instance
path Parameters
| processInstanceKey required | integer <int64> Example: 4503599627370501 |
Responses
Response samples
- 200
- 400
- 404
- 405
- 500
- 502
{- "partitions": [
- {
- "partition": 1,
- "items": {
- "Task_CheckApplication": {
- "activeCount": 1,
- "incidentCount": 0
}
}
}
]
}Start a new process instance starting at chosen elements
Request Body schema: application/jsonrequired
| processDefinitionKey required | integer <int64> |
| variables | object or null |
| startingElementIds required | Array of strings Allows for a start at chosen element id |
Responses
Request samples
- Payload
{- "processDefinitionKey": 4503599627370498,
- "variables": {
- "customerId": "customer-456",
- "amount": 1000,
- "applicationDate": "2025-08-22"
}, - "startingElementIds": [
- "flowNode-1",
- "flowNode-2"
]
}Response samples
- 201
- 400
- 404
- 405
- 413
- 415
- 500
- 502
{- "key": 0,
- "processDefinitionKey": 0,
- "bpmnProcessId": "string",
- "version": 0,
- "versionTag": "string",
- "businessKey": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "state": "active",
- "parentProcessInstanceKey": 0,
- "processType": "default",
- "variables": { },
- "incidentCount": 0,
- "activeElementInstances": [
- {
- "elementInstanceKey": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "state": "string",
- "elementId": "string"
}
]
}Modify process instance
Request Body schema: application/jsonrequired
| processInstanceKey required | integer <int64> |
| variables | object or null Sets process instance variables. |
Array of objects (StartElementInstanceData) Starts execution token. | |
Array of objects (TerminateElementInstanceData) Terminates execution token. |
Responses
Request samples
- Payload
{- "processInstanceKey": 0,
- "variables": { },
- "elementInstancesToStart": [
- {
- "elementId": "flow-node-1"
}
], - "elementInstancesToTerminate": [
- {
- "elementId": "flow-node-1"
}
]
}Response samples
- 201
- 400
- 404
- 405
- 413
- 415
- 500
- 502
{- "processInstance": {
- "key": 0,
- "processDefinitionKey": 0,
- "bpmnProcessId": "string",
- "version": 0,
- "versionTag": "string",
- "businessKey": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "state": "active",
- "parentProcessInstanceKey": 0,
- "processType": "default",
- "variables": { },
- "incidentCount": 0,
- "activeElementInstances": [
- {
- "elementInstanceKey": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "state": "string",
- "elementId": "string"
}
]
}, - "activeElementInstances": [
- {
- "elementInstanceKey": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "state": "string",
- "elementId": "string"
}
]
}Get list of dmn resource definitions
query Parameters
| page | integer <int32> >= 1 Default: 1 Example: page=1 Page number (1-based indexing) |
| size | integer <int32> [ 1 .. 100 ] Default: 10 Example: size=10 Number of items per page (max 100) |
| onlyLatest | boolean Default: false If true, returns only the latest version of each DMN resource definition grouped by dmnResourceDefinitionId |
| sortBy | string Enum: "dmnDefinitionName" "dmnResourceDefinitionId" "version" "key" Sort field |
| sortOrder | string Enum: "asc" "desc" Sort direction |
| dmnResourceDefinitionId | string Filter by DMN resource definition ID to get all versions |
| dmnDefinitionName | string Filter by name (partial match) |
| search | string Search by DMN resource definition ID or DMN definition name |
Responses
Response samples
- 200
- 400
- 405
- 500
- 502
{- "items": [
- {
- "key": 4503599627370496,
- "version": 2,
- "dmnResourceDefinitionId": "loan-approval",
- "dmnDefinitionName": "Loan Approval Decision"
}, - {
- "key": 4503599627370497,
- "version": 1,
- "dmnResourceDefinitionId": "credit-score-check",
- "dmnDefinitionName": "Credit Score Check"
}
], - "page": 1,
- "size": 10,
- "count": 2,
- "totalCount": 2
}Get dmn resource definition
path Parameters
| dmnResourceDefinitionKey required | integer <int64> Example: 4503599627370495 |
Responses
Response samples
- 200
- 400
- 404
- 405
- 500
- 502
{- "key": 4503599627370495,
- "version": 2,
- "dmnResourceDefinitionId": "loan-approval",
- "dmnDefinitionName": "Loan Approval Decision",
- "dmnData": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<definitions>\n <decision id=\"loan-approval\" name=\"Loan Approval\">\n ...\n </decision>\n</definitions>\n"
}Evaluate latest version of decision definition directly in engine
path Parameters
| decisionId required | string Example: loan-approval |
Request Body schema: application/jsonrequired
| bindingType required | string Enum: "latest" "deployment" "versionTag" |
| dmnResourceDefinitionId | string Can be used in combination with bindingType latest |
| versionTag | string Is used in combination with bindingType versionTag |
| variables | object or null |
Responses
Request samples
- Payload
{- "bindingType": "latest",
- "variables": {
- "age": 25,
- "income": 50000
}
}Response samples
- 200
- 400
- 404
- 405
- 413
- 415
- 500
- 502
{- "evaluatedDecisions": [
- {
- "decisionId": "loan-approval",
- "decisionName": "Loan Approval",
- "decisionType": "DECISION_TABLE",
- "decisionDefinitionVersion": 1,
- "dmnResourceDefinitionKey": 4503599627370495,
- "dmnResourceDefinitionId": "loan-approval",
- "matchedRules": [
- {
- "ruleId": "rule1",
- "ruleIndex": 0,
- "evaluatedOutputs": [
- {
- "outputId": "output1",
- "outputName": "approved",
- "outputValue": {
- "approved": true
}
}
]
}
], - "decisionOutput": {
- "approved": true
}, - "evaluatedInputs": [
- {
- "inputId": "input1",
- "inputName": "Age",
- "inputExpression": "age",
- "inputValue": {
- "age": 25
}
}, - {
- "inputId": "input2",
- "inputName": "Income",
- "inputExpression": "income",
- "inputValue": {
- "income": 50000
}
}
]
}
], - "decisionOutput": {
- "approved": true
}
}Get list of decision instances
query Parameters
| dmnResourceDefinitionKey | integer <int64> Filter by DMN resource definition key |
| dmnResourceDefinitionId | string Filter by DMN resource definition ID |
| processInstanceKey | integer <int64> Filter by process instance |
| evaluatedFrom | string <date-time> Filter - evaluated after this date |
| evaluatedTo | string <date-time> Filter - evaluated before this date |
| page | integer <int32> >= 1 Default: 1 Page number (1-based indexing) |
| size | integer <int32> [ 1 .. 100 ] Default: 10 Number of items per page (max 100) |
| sortBy | string Enum: "evaluatedAt" "key" Sort field |
| sortOrder | string Enum: "asc" "desc" Sort direction |
Responses
Response samples
- 200
- 400
- 405
- 500
- 502
{- "partitions": [
- {
- "partition": 1,
- "totalCount": 156,
- "items": [
- {
- "key": 4503599627370600,
- "dmnResourceDefinitionKey": 4503599627370495,
- "dmnResourceDefinitionId": "loan-approval",
- "processInstanceKey": 4503599627370501,
- "flowElementInstanceKey": 4503599627370550,
- "evaluatedAt": "2025-08-22T14:30:25Z",
- "inputCount": 3,
- "outputCount": 2
}
]
}, - {
- "partition": 2,
- "totalCount": 98,
- "items": [
- {
- "key": 9007199254740996,
- "dmnResourceDefinitionKey": 4503599627370495,
- "dmnResourceDefinitionId": "loan-approval",
- "processInstanceKey": 9007199254740992,
- "flowElementInstanceKey": 9007199254740980,
- "evaluatedAt": "2025-08-22T15:45:33Z",
- "inputCount": 3,
- "outputCount": 2
}
]
}
], - "page": 1,
- "size": 10,
- "count": 2,
- "totalCount": 254
}Get decision instance details
path Parameters
| decisionInstanceKey required | integer <int64> Example: 4503599627370600 |
Responses
Response samples
- 200
- 404
- 405
- 500
- 502
{- "key": 4503599627370600,
- "dmnResourceDefinitionKey": 4503599627370495,
- "dmnResourceDefinitionId": "loan-approval",
- "dmnResourceDefinitionVersion": 1,
- "processInstanceKey": 4503599627370501,
- "flowElementInstanceKey": 4503599627370550,
- "evaluatedAt": "2025-08-22T14:30:25Z",
- "decisionRequirementsKey": 4503599627370490,
- "decisionRequirementsId": "loan-drd",
- "evaluatedDecisions": [
- {
- "decisionId": "loan-approval",
- "decisionName": "Loan Approval",
- "decisionType": "DECISION_TABLE",
- "evaluationOrder": 1,
- "inputs": [
- {
- "inputId": "input_amount",
- "inputName": "Loan Amount",
- "inputExpression": "loanAmount",
- "inputValue": 50000
}
], - "outputs": [
- {
- "outputId": "output_approved",
- "outputName": "Approved",
- "outputValue": true
}
], - "matchedRules": [
- {
- "ruleId": "rule_1",
- "ruleIndex": 0,
- "evaluatedOutputs": [
- {
- "outputId": "output_approved",
- "outputName": "Approved",
- "outputValue": true
}
]
}
]
}
], - "decisionOutput": {
- "approved": true
}
}Get list of jobs on partitions
query Parameters
| processInstanceKey | integer <int64> Filter by process instance |
| jobType | string Example: jobType=service-task Filter by job type |
| assignee | string Filter by assignee |
| state | string (JobState) Enum: "active" "completed" "terminated" "failed" Example: state=active Filter by job state |
| page | integer <int32> >= 1 Default: 1 Example: page=1 Page number (1-based indexing) |
| size | integer <int32> [ 1 .. 100 ] Default: 10 Example: size=10 Number of items per page (max 100) |
| sortBy | string Enum: "createdAt" "key" "type" "state" Sort field |
| sortOrder | string Enum: "asc" "desc" Sort direction |
Responses
Response samples
- 200
- 400
- 405
- 500
- 502
{- "partitions": [
- {
- "partition": 1,
- "totalCount": 1,
- "items": [
- {
- "key": 4503599627370540,
- "elementId": "Task_ReviewApplication",
- "type": "user-task",
- "processInstanceKey": 4503599627370501,
- "state": "active",
- "createdAt": "2025-08-22T15:10:26Z",
- "assignee": "john.doe",
- "retries": 3,
- "inputVariables": {
- "formKey": "loan-review-form"
}
}
]
}, - {
- "partition": 2,
- "totalCount": 1,
- "items": [
- {
- "key": 9007199254740996,
- "elementId": "Task_SendNotification",
- "type": "service-task",
- "processInstanceKey": 9007199254740992,
- "state": "active",
- "createdAt": "2025-08-22T15:46:33Z",
- "retries": 3,
- "inputVariables": {
- "notificationType": "email",
- "recipient": "customer@example.com"
}
}
]
}
], - "page": 1,
- "size": 10,
- "count": 2,
- "totalCount": 2
}Response samples
- 200
- 404
- 405
- 500
- 502
{- "key": 4503599627370540,
- "elementId": "Task_ReviewApplication",
- "type": "zenbpm:userTask",
- "processInstanceKey": 4503599627370501,
- "state": "active",
- "createdAt": "2025-08-22T15:10:26Z",
- "assignee": "john.doe",
- "retries": 3,
- "inputVariables": {
- "formKey": "loan-review-form",
- "applicationId": "APP-12345",
- "customerName": "Alice Johnson"
}
}Assign a job to a user
path Parameters
| jobKey required | integer <int64> Example: 4503599627370540 |
Request Body schema: application/jsonrequired
| assignee required | string |
Responses
Request samples
- Payload
{- "assignee": "john.doe"
}Response samples
- 400
- 404
- 405
- 413
- 415
- 500
- 502
{- "code": "NOT_FOUND",
- "message": "Process instance with key 4503599627370501 not found"
}Complete a job
Completes the job with the given output variables and moves its token on.
The request is idempotent: a job which is already completed is answered with 201 again,
and its process instance is moved on if an earlier completion left it behind. A job which
was terminated (its instance cancelled, an interrupting boundary event) or failed with an
incident no longer waits for a worker and is answered with 409; nothing is changed.
path Parameters
| jobKey required | integer <int64> Example: 4503599627370540 |
Request Body schema: application/jsonrequired
| variables | object or null |
Responses
Request samples
- Payload
{- "variables": {
- "result": "success",
- "transactionId": "tx-789-xyz",
- "processedAt": "2025-08-22T15:15:30Z"
}
}Response samples
- 400
- 404
- 405
- 409
- 413
- 415
- 500
- 502
{- "code": "NOT_FOUND",
- "message": "Process instance with key 4503599627370501 not found"
}Extend the lock of a job delivered over the gRPC job stream
Moves the lock deadline of a job to now plus lockDuration (absent: the lock duration of the
subscription the job was delivered under, capped by jobManager.maxLockDurationMs) and answers
the new deadline. clientId is the client id of the job stream the job was delivered to; a job
which is not locked at the moment (the lock lapsed, the job was completed or failed) or which is
locked for a different client answers 409, and the job itself is left untouched. With
deliveryToken only the lock of that delivery is extended: a lock the job holds for another
delivery, as after this delivery's lock lapsed and the job came back to the same client, answers
409 too. It exists for workers which receive jobs over the stream but send their commands over
REST. Jobs fetched through GET /jobs hold no lock and cannot extend one.
path Parameters
| jobKey required | integer <int64> Example: 4503599627370540 |
Request Body schema: application/jsonrequired
| clientId required | string The client id of the job stream the job was delivered to. |
| deliveryToken | integer <int64> >= 1 The |
| lockDuration | string ISO-8601 duration to lock the job for, counted from now. Absent means the subscription's lock duration. |
Responses
Request samples
- Payload
{- "clientId": "order-worker-1",
- "lockDuration": "PT5M"
}Response samples
- 200
- 400
- 404
- 405
- 409
- 413
- 415
- 500
- 502
{- "lockUntil": "2025-08-22T15:20:30Z"
}Fail a job
Reports that a worker could not finish the job.
With an errorCode the failure is a BPMN error: a matching error boundary event or error
event sub-process takes over, otherwise the job fails with an incident. Retries are neither
consulted nor spent, and the variables are handed to the catching event.
Without an errorCode one attempt of the job is spent. While retries remain, the job stays
active, no incident is created, and the job is handed out again once retryBackoff has
passed (see retryAt on the job); the variables of such a failure are dropped. When none
remain, the job fails, keeps the variables as its output variables, and an incident naming
the attempts is created.
retries and retryBackoff are validated in every request, and a request with an invalid
value is refused with 400 even when it carries an errorCode, which then ignores them.
A request naming the deliveryToken it belongs to is recorded once: repeated after a
timeout, or arriving after the job was handed out again, it changes nothing and is answered
with 204 like the first, whatever it carries. One exception: a failure with an errorCode
which raised an incident leaves no entry in the failure history, so once that incident was
resolved and the failure of a later delivery was recorded, its repeat is refused with 409.
A request for a delivery which another delivery superseded before its failure was recorded -
its lock lapsed or the leader changed, and the job was handed out again - changes nothing
and is refused with 409: the newer delivery decides. A token which was never handed out is refused with 400. Without
deliveryToken the request is not idempotent: every failure without an errorCode the engine
receives spends an attempt, also one for a job waiting out its backoff; a client which repeats
a request after a timeout may spend two, and one repeated after the first exhausted the
retries is answered with 409, like a failure of a job which was completed or terminated.
A job delivered over the gRPC job stream stays locked for the stream's client until that
client reports it or the lock lapses. A worker which receives jobs over the stream but sends
its commands over REST names its stream's clientId, as on extendJobLock, so that its
failure releases the lock and retryBackoff is honoured; without clientId the lock stands,
and the job is handed out again only once the lock has lapsed, whatever retryBackoff says.
path Parameters
| jobKey required | integer <int64> The key of the job to fail. |
Request Body schema: application/jsonrequired
| clientId | string The client id of the job stream the job was delivered to, whose lock the failure releases. Absent, a lock held on the job stands until it lapses. |
| deliveryToken | integer <int64> >= 1 The delivery the failure belongs to - the |
| errorCode | string The error code against which an error catch event is matched. Absent or empty, the failure spends one of the job's retries. |
| message | string Why the job failed. Kept as |
| retries | integer <int32> >= 0 Retries remaining after this failure. Absent means one less than now; a value above |
| retryBackoff | string ISO-8601 duration (for example |
| variables | object or null |
Responses
Request samples
- Payload
{- "errorCode": "123-456-789",
- "variables": {
- "transactionId": "tx-789-xyz"
}
}Response samples
- 400
- 404
- 405
- 409
- 413
- 415
- 500
- 502
{- "code": "NOT_FOUND",
- "message": "Process instance with key 4503599627370501 not found"
}Set the remaining retries of a job
Sets the remaining retries of an active or failed job and when it is handed out next. An
absent retryAt makes a job waiting out a backoff deliverable at once. The incident of a
failed job stays open: resolving it then keeps the retries set here instead of restoring
the retries of the task definition, and a retryAt still ahead keeps the job from its
workers until then. To set the retries of a failed job and resolve its incident in one
request, give them to POST /v1/incidents/{incidentKey}/resolve instead.
path Parameters
| jobKey required | integer <int64> Example: 4503599627370540 |
Request Body schema: application/jsonrequired
| retries required | integer <int32> >= 1 Retries the job has from now on, at most |
| retryAt | string <date-time> When the job is handed out next. Absent, or in the past, means at once; later than now plus |
Responses
Request samples
- Payload
{- "retries": 3
}Response samples
- 400
- 404
- 405
- 409
- 413
- 415
- 500
- 502
{- "code": "NOT_FOUND",
- "message": "Process instance with key 4503599627370501 not found"
}List the failures of a job
Lists the failures without an error code a worker reported for the job, newest first: the attempt, when it failed, why, and when the job was handed out again. The failure which exhausted the retries carries the key of the incident it created. Failures with an error code are BPMN errors and are not listed.
path Parameters
| jobKey required | integer <int64> Example: 4503599627370540 |
query Parameters
| page | integer <int32> >= 1 Default: 1 Example: page=1 Page number (1-based indexing) |
| size | integer <int32> [ 1 .. 1000 ] Default: 10 Example: size=10 Number of items per page (max 1000) |
Responses
Response samples
- 200
- 400
- 404
- 405
- 500
- 502
{- "items": [
- {
- "key": 4503599627370560,
- "jobKey": 4503599627370540,
- "processInstanceKey": 4503599627370501,
- "attempt": 2,
- "failedAt": "2025-08-22T15:11:40Z",
- "retryAt": "2025-08-22T15:12:40Z",
- "message": "payment service unavailable"
}, - {
- "key": 4503599627370555,
- "jobKey": 4503599627370540,
- "processInstanceKey": 4503599627370501,
- "attempt": 1,
- "failedAt": "2025-08-22T15:11:20Z",
- "retryAt": "2025-08-22T15:11:30Z",
- "message": "payment service unavailable"
}
], - "page": 1,
- "size": 10,
- "count": 2,
- "totalCount": 2
}Publish a message
Request Body schema: application/jsonrequired
| correlationKey | string |
| messageName required | string |
| variables | object or null |
Responses
Request samples
- Payload
{- "correlationKey": "011-235-813",
- "messageName": "payment-received",
- "variables": {
- "paymentId": "pay-123-abc",
- "amount": 1000,
- "currency": "USD",
- "receivedAt": "2025-08-22T16:25:10Z"
}
}Response samples
- 400
- 404
- 405
- 413
- 415
- 500
- 502
{- "code": "BAD_REQUEST",
- "message": "Invalid request payload"
}Resolve an incident
Resolves an incident and continues the execution it stopped. The job the incident leaves
waiting, if any, starts a fresh series of attempts with the retries of its task definition,
evaluated again, and is handed out at once. Retries set for the job since its last series
ended, with POST /v1/jobs/{jobKey}/retries, are kept instead, together with their retryAt.
The body is optional. With retries the job gets these retries, and with retryAt it is
not handed out before then, in the same transaction that resolves the incident: either both
happen or neither does. The retries of the task definition are not evaluated then, so this is
also the way out when they no longer evaluate (409). retries and retryAt are checked as
POST /v1/jobs/{jobKey}/retries checks them. Retries given for an incident which leaves no
job waiting, such as one of an expression, are refused with 400; a job whose incident it
did not raise itself, such as one of a boundary event, keeps them as that endpoint would set
them.
path Parameters
| incidentKey required | integer <int64> Example: 4503599627370530 |
Request Body schema: application/jsonoptional
| retries | integer <int32> >= 1 Retries the job the incident leaves waiting has from now on, at most |
| retryAt | string <date-time> When that job is handed out next; only together with |
Responses
Request samples
- Payload
{- "retries": 3
}Response samples
- 400
- 404
- 405
- 409
- 413
- 415
- 500
- 502
{- "code": "NOT_FOUND",
- "message": "Process instance with key 4503599627370501 not found"
}Start a new process instance starting at chosen elements
Request Body schema: application/jsonrequired
| processDefinitionKey required | integer <int64> |
| variables | object or null |
| startingElementIds required | Array of strings Allows for a start at chosen element id |
Responses
Request samples
- Payload
{- "processDefinitionKey": 4503599627370498,
- "variables": {
- "customerId": "customer-456",
- "amount": 1000,
- "applicationDate": "2025-08-22"
}, - "startingElementIds": [
- "flowNode-1",
- "flowNode-2"
]
}Response samples
- 201
- 400
- 404
- 405
- 413
- 415
- 500
- 502
{- "key": 0,
- "processDefinitionKey": 0,
- "bpmnProcessId": "string",
- "version": 0,
- "versionTag": "string",
- "businessKey": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "state": "active",
- "parentProcessInstanceKey": 0,
- "processType": "default",
- "variables": { },
- "incidentCount": 0,
- "activeElementInstances": [
- {
- "elementInstanceKey": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "state": "string",
- "elementId": "string"
}
]
}Modify process instance
Request Body schema: application/jsonrequired
| processInstanceKey required | integer <int64> |
| variables | object or null Sets process instance variables. |
Array of objects (StartElementInstanceData) Starts execution token. | |
Array of objects (TerminateElementInstanceData) Terminates execution token. |
Responses
Request samples
- Payload
{- "processInstanceKey": 0,
- "variables": { },
- "elementInstancesToStart": [
- {
- "elementId": "flow-node-1"
}
], - "elementInstancesToTerminate": [
- {
- "elementId": "flow-node-1"
}
]
}Response samples
- 201
- 400
- 404
- 405
- 413
- 415
- 500
- 502
{- "processInstance": {
- "key": 0,
- "processDefinitionKey": 0,
- "bpmnProcessId": "string",
- "version": 0,
- "versionTag": "string",
- "businessKey": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "state": "active",
- "parentProcessInstanceKey": 0,
- "processType": "default",
- "variables": { },
- "incidentCount": 0,
- "activeElementInstances": [
- {
- "elementInstanceKey": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "state": "string",
- "elementId": "string"
}
]
}, - "activeElementInstances": [
- {
- "elementInstanceKey": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "state": "string",
- "elementId": "string"
}
]
}