---
title: MLSolution - Global
description: The MLSolution API provides methods for handling Predictive Intelligence predictions and retrieving solution objects for all capabilities: similarity, classification, and clustering\).Gets the prediction result for a classification solution and applies it to the input GlideRecord if the confidence value is higher than the threshold.Gets the capability information of a trained solution.Gets assignments for a clustering solution.Gets the cluster information for a clustering solution.Gets information for a specified clustering solution.Gets the version of the active solution.Determines if a solution is active.Gets the prediction results from the prediction server given a GlideRecord or an array of key-value pairs.
locale: en-US
canonical_url: https://www.servicenow.com/docs/r/australia/api-reference/server-api-reference/MLSolutionAPI.html
release: australia
product: Server API Reference
classification: server-api-reference
topic_type: concept
last_updated: "2026-03-12"
reading_time_minutes: 6
breadcrumb: [Server API reference, API reference, API implementation and reference]
---
# MLSolution- Global
The MLSolution API provides methods for handling Predictive Intelligence predictions and retrieving solution objects for all capabilities: similarity, classification, and clustering\).
This API provides methods commonly used among all solution capabilities and methods unique to classification and clustering solutions.
- Common methods used for all solution objects:
- getCapability\(\)
- getVersion\(\)
- isActive\(\)
- predict\(\)
- Methods only used for classification and regression solutions:
- applyPrediction\(\)
- Methods only used for clustering solutions:
- getClusterAssignments\(\)
- getClusterForRecord\(\)
- getClusterInfo\(\)
The MLSolution API requires the Predictive Intelligence plugin \(com.glide.platform\_ml\) and is provided within the `sn_ml` namespace.
The methods in this object are instantiated using [MLSolutionFactory](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/server-api-reference/MLSolutionFactoryAPI.md).
**Parent Topic:**[Server API reference](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/server-api-reference/api-server.md)
**Related topics**
[MLSolutionUtil](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/server-api-reference/MLSolutionUtilAPI.md)
[REST API: Get predictions for multiple solutions](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-apis/agent-intelligence-api.md)
## MLSolution - applyPrediction\(GlideRecord now\_GR\)
Gets the prediction result for a classification solution and applies it to the input GlideRecord if the confidence value is higher than the threshold.
|Name|Type|Description|
|----|----|-----------|
|now\_GR|GlideRecord|GlideRecord object containing values on which to run a prediction and apply the results.|
|
Type
|
Description
|
|---|
|
Boolean
|
Flag that indicates whether the prediction was applied:
- true: Prediction applied
- false: Prediction rejected
|
```
var mlSolution = sn_ml.MLSolutionFactory.getSolution("ml_incident_categorization");
var inputGR = new GlideRecord("incident");
inputGR.get("0ef47232db801300864adfea5e961912");
mlSolution.applyPrediction(inputGR);
```
## MLSolution - getCapability\(\)
Gets the capability information of a trained solution.
|Name|Type|Description|
|----|----|-----------|
|None| | |
|
Type
|
Description
|
|---|
|
String
|
Type of trained solution.Possible values:
- Similarity
- Classification
- Clustering
|
```
var mlSolution = sn_ml.MLSolutionFactory.getSolution("ml_x_global_clustering");
// configure optional parameters
var options = {};
options.group_by = 'network';
options.cluster_id = 1;
options.top_n_per_cluster = 3;
if (mlSolution.getCapability() == 'clustering') {
var results = mlSolution.getClusterAssignments(options);
// pretty print JSON results
gs.print(JSON.stringify(JSON.parse(results), null, 2));
}
```
## MLSolution - getClusterAssignments\(Object options\)
Gets assignments for a clustering solution.
|
Name
|
Type
|
Description
|
|---|
|
options
|
Object
|
Optional. Values to use to narrow down the returned results by group and level within a clustering solution. Default: Return cluster memberships for all clusters.
|
|
options.group\_by
|
String
|
Optional. Identifies the segmentation field for which to retrieve cluster memberships, for example, assignment\_group.This field provides the same grouping as options provided in the **Use Group By** check box in the **Clustering Definition** form. The information provided varies based on the table selected in the **Table** field. For more information, see [Create and train a clustering solution](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/intelligent-experiences/create-clustering-solution.md).
|
|
options.cluster\_id
|
String
|
Optional. Cluster ID of a trained solution in the Cluster Summary \[ml\_cluster\_summary\] table.
|
|
options.top\_n\_per\_cluster
|
Number
|
Number of top results to receive for each cluster.
|
|
Type
|
Description
|
|---|
|
Object
|
JSON array containing cluster information in increasing order by cluster\_id:- cluster\_id: String. Unique cluster number within a solution of clusters.
- rec\_display\_id: String. Record type and number.
- rec\_sys\_id: String. Record sys\_id.
- group\_by: If grouped, name of the segmentation field associated with this cluster.
|
```
var mlSolution = sn_ml.MLSolutionFactory.getSolution("ml_x_global_clustering");
// configure optional parameters
var options = {};
options.group_by = 'network';
options.cluster_id = '1';
// returns top 3 results per cluster
options.top_n_per_cluster = 3;
var results = mlSolution.getClusterAssignments(options);
```
Output:
```
[{"cluster_id":"1","rec_display_id":"Incident: INC0014483","rec_sys_id":"04e33e7adb401300864adfea5e961900","group_by":"network"},
{"cluster_id":"1","rec_display_id":"Incident: INC0011133","rec_sys_id":"5bd23af2db401300864adfea5e96194d","group_by":"network"}]
```
## MLSolution - getClusterForRecord\(GlideRecord now\_GR\)
Gets the cluster information for a clustering solution.
|Name|Type|Description|
|----|----|-----------|
|now\_GR|GlideRecord|Name of the input GlideRecord.|
|Type|Description|
|----|-----------|
|String|The cluster\_id from the Cluster Summary \[ml\_cluster\_summary\] table if the record belongs to a cluster. Empty string returns if the record does not belong to a cluster.|
```
var mlSolution = sn_ml.MLSolutionFactory.getSolution("solution_name");
var now_GR = new GlideRecord('incident');
if (mlSolution.getCapability() == 'clustering') {
var clusterId = mlSolution.getClusterForRecord(now_GR);
}
```
## MLSolution - getClusterInfo\(Object options\)
Gets information for a specified clustering solution.
|
Name
|
Type
|
Description
|
|---|
|
options
|
Object
|
Optional. Narrows down the returned results by group and level within a clustering solution. Default: Return cluster memberships for all clusters.
|
|
options.group\_by
|
String
|
Optional. Identifies the segmentation field for which to retrieve cluster memberships, for example, assignment\_group.This field provides the same grouping as options provided in the **Use Group By** check box in the **Clustering Definition** form. The information provided varies based on the table selected in the **Table** field. For more information, see [Create and train a clustering solution](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/intelligent-experiences/create-clustering-solution.md).
|
|
options.cluster\_id
|
String
|
Optional. Cluster ID of a trained solution in the Cluster Summary \[ml\_cluster\_summary\] table.
|
|
Type
|
Description
|
|---|
|
Object
|
JSON array containing cluster information in increasing order by cluster\_id:- cluster\_id: String. Unique cluster number within a solution of clusters.
- cluster\_quality: String. Number from 0 to 100. Higher numbers indicate higher cluster density.
- cluster\_size: String. Number of records in a cluster.
- group\_by: If grouped, name of the segmentation field associated with this cluster.
- cluster\_concept: String. Set of words that describe the cluster in descending order of frequency.
|
```
var mlSolution = sn_ml.MLSolutionFactory.getSolution("ml_x_global_clustering");
// configure optional parameters
var options = {};
options.group_by = 'network';
options.cluster_id = 1;
var results = mlSolution.getClusterInfo(options);
```
Output:
```
[ {"cluster_id":"1","cluster_quality":"56.6","cluster_size":"46","group_by":"SLA","cluster_concept":"issue occur capacity ..."},
{"cluster_id":"2","cluster_quality":"55.47","cluster_size":"75","group_by":"SLA","cluster_concept":"clone instance request ..."},
... ]
```
## MLSolution - getVersion\(\)
Gets the version of the active solution.
|Name|Type|Description|
|----|----|-----------|
|None| | |
|Type|Description|
|----|-----------|
|String|Version of the active solution.|
```
var mlSolution = sn_ml.MLSolutionFactory.getSolution("solution_name");
var solutionVersion = mlSolution.getVersion();
```
## MLSolution - isActive\(\)
Determines if a solution is active.
|Name|Type|Description|
|----|----|-----------|
|None| | |
|
Type
|
Description
|
|---|
|
Boolean
|
Flag that indicates whether the solution is active.- true: Solution active
- false: Solution inactive
|
```
var mlSolution = sn_ml.MLSolutionFactory.getSolution("solution_name");
var isActive = mlSolution.isActive();
```
## MLSolution - predict\(Object input, Object options\)
Gets the prediction results from the prediction server given a GlideRecord or an array of key-value pairs.
You can use this method to call prediction with multiple input records because GlideRecord is an iterator.
|
Name
|
Type
|
Description
|
|---|
|
input
|
Object
|
[GlideRecord](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/server-api-reference/c_GlideRecordAPI.md) or array of JSON objects containing field names and values as key-value pairs.
|
|
options
|
Object
|
Optional. JSON key-value pair with the following properties:- top\_n: Number. If provided, returns the top results, up to the specified number of predictions.
- apply\_threshold: Boolean. Checks the threshold value for the solution and applies it to the result set. The threshold value is solution threshold for similarity or class-level threshold for classification. Default value is true.
- custom\_results\_filter: String. Similarity solutions only. Specifies the allowed set from which results are returned using an encoded query.
|
|
Type
|
Description
|
|---|
|
Object
|
JSON object containing the prediction results sorted by sys\_id or record\_number. - predictedValue: String. Value representing the prediction result.
- predictedSysId: String. The sys\_id of the predicted value. Results can be from any table on which information is being predicted.
- confidence: Number. Value of the confidence associated with the prediction. For example, 53.84.
- threshold: Number. Value of the configured threshold associated with the prediction.
|
```
var mlSolution = sn_ml.MLSolutionFactory.getSolution("ml_incident_categorization");
// single GlideRecord input
var input = new GlideRecord("incident");
input.get("0ef47232db801300864adfea5e961912");
// configure optional parameters
var options = {};
options.top_n = 3;
options.apply_threshold = false;
var results = mlSolution.predict(input, options);
// pretty print JSON results
gs.print(JSON.stringify(JSON.parse(results), null, 2));
```
```
var mlSolution = sn_ml.MLSolutionFactory.getSolution("ml_incident_categorization");
// multiple GlideRecord input
var input = new GlideRecord("incident");
input.addQuery("sys_created_onONLast week@javascript:gs.beginningOfLastWeek()@javascript:gs.endOfLastWeek()");
input.query();
// configure optional parameters
var options = {};
options.top_n = 3;
options.apply_threshold = false;
var results = mlSolution.predict(input, options);
// pretty print JSON results
gs.print(JSON.stringify(JSON.parse(results), null, 2));
```
Output:
```
{
input_gr_sys_id1: [
{
predictedValue : xxx,
predictedSysId : xx0,
confidence : xxx,
threshold : xxx
},
{
predictedValue : yyy,
predictedSysId : xx1,
confidence : xxx,
threshold : xxx
}
],
input_gr_sys_id2 : [
{
predictedValue : xxx,
predictedSysId : xx0,
confidence : xxx,
threshold : xxx
},
...
]
}
```
```
var mlSolution = sn_ml.MLSolutionFactory.getSolution("ml_incident_categorization");
// key-value pairs input
var input = [{"short_description":"my email is not working"},
{short_description:"need help with password"}];
// configure optional parameters
var options = {};
options.top_n = 3;
options.apply_threshold = false;
var results = mlSolution.predict(input, options);
// pretty print JSON results
gs.print(JSON.stringify(JSON.parse(results), null, 2));
```