---
title: Controls in Virtual Agent API
description: Virtual Agent API provides you various controls to manage the responses in your conversation.
locale: en-US
canonical_url: https://www.servicenow.com/docs/r/australia/conversational-interfaces/virtual-agent/va-api-controls.html
release: australia
product: Virtual Agent
classification: virtual-agent
topic_type: concept
last_updated: "2026-03-12"
reading_time_minutes: 6
breadcrumb: [Use, Virtual Agent API, Build and deploy, Virtual Agent, Conversational Interfaces]
---
# Controls in Virtual Agent API
Virtual Agent API provides you various controls to manage the responses in your conversation.
The available controls in Virtual Agent API are:
## Output Text
```
{
"uiType": "OutputText",
"group": "DefaultText",
"value": "**bold**\n*italic*\n***bold italic***\n[Google](https://empcygiraffe6.service-now.com/va_link.do?token=77ee77ef77eSZGFlMTc3OWU5NzY2MTExMDUyNjFiMzQ3MTE1M2FmYjTvt6zvt5Qx77es77etWE1nS0ZLOElhU1FQYzhIajh2dmNmZz09WHdPTDYzV3ZpUWF1MGJwRlB0ZktUY29wVWt1UGVueUNIS1FkRHRyUW9idHlmVFZlRWJOODZyRjZYN0VQamxnWUV5WkhZSDRJaWFGWmJRZU1CaXZLYWhudnkwbDdvNFZsMlMzUUw4Q3VRTUJWMHhvTWlRLXZOQnh5M0hveVBuellNVmJCbGlka0RqNTAzVFVUQml0MTZzSnlUTVJoakdZektldXdoYXlM77eu77ev&target_url=https%3A%2F%2Fwww.google.co.in)\n\n- ***ul1***\n- ***ul2***\n\n\n1. ol1\n2. ol2\n\n",
"maskType": "NONE | SECURE"
}
```
|Field|Description|
|-----|-----------|
|value|Contains the output text value.|
|maskType|'NONE' indicates normal text and 'SECURE' indicates secure output text.|
## Output Html
```
{
"uiType": "OutputHtml",
"group": "DefaultOutputHtml",
"style": "inline",
"height": 0,
"width": 0,
"value": "
| Company | Contact | Country |
| Alfreds Futterkiste | Maria Anders | Germany |
| Centro comercial Moctezuma | Francisco Chang | Mexico |
| Ernest Handel | Roland Mendel | Austria |
| Island Trading | Helen Bennett | UK |
| Laughing Bacchus Winecellars | Yoshi Tannamuri | Canada |
| Magazzini Alimentari Riuniti | Giovanni Rovelli | Italy |
",
"imageUrl": "https://empcygiraffe6.service-now.com//api/now/v1/cs/media/zKFqUx0NJyVaFRJqzeRhFgeMsMo9211mCvrMgKzrRpTWqFJDrXLOadoYGC5CQnwr",
"imageHeight": 217,
"imageWidth": 501,
"links": [
{
"link": "https://www.google.co.in",
"label": "Alfreds Futterkiste"
},
{
"link": "https://www.google.co.in",
"label": "Ernest Handel"
},
{
"link": "https://www.google.co.in",
"label": "Canada"
}
]
}
```
|Field|Description|
|-----|-----------|
|value|Contains the html value.|
|imageUrl|Contains the image of html if 'Html to image conversion required' is enabled on sys\_cs\_provider.|
|imageHeight|Contains the image height if 'Html to image conversion required' is enabled on sys\_cs\_provider.|
|imageWidth|Contains the image width if 'Html to image conversion required' is enabled on sys\_cs\_provider.|
|links|Contains links in the given html if 'Html to image conversion required' is enabled on sys\_cs\_provider.|
## Output Image
```
{
"uiType": "OutputImage",
"group": "DefaultOutputImage",
"value": "https://adaptivecards.io/content/cats/1.png",
"altText": "Image alt text"
}
```
|Field|Description|
|-----|-----------|
|value|Contains the image url.|
|altText|Contains the alt text for the image \(not mandatory\).|
## Output Link
```
{
"uiType": "OutputLink",
"group": "DefaultOutputLink",
"label": "ServiceNow",
"header": "The world works with ServiceNow",
"type": "link",
"value": {
"action": "https://empcygiraffe6.service-now.com/va_link.do?token=&target_url=https%3A%2F%2Fwww.servicenow.com",
"target": "_blank"
}
}
```
|Field|Description|
|-----|-----------|
|header|Link Header|
|label|Link label|
|value->action|Link url|
## Multi Link
```
{
"uiType": "GroupedPartsOutputControl",
"group": "DefaultGroupedPartsOutputControl",
"groupPartType": "Link",
"header": "Multilink Header",
"values": [
{
"action": "https://empcygiraffe6.service-now.com/va_link.do?token=&target_url=https%3A%2F%2Fwww.link1.com",
"description": "a short desc",
"label": "link 1 label",
"context": "KB",
"target": "_blank"
},
{
"action": "https://empcygiraffe6.service-now.com/va_link.do?token=&target_url=https%3A%2F%2Fwww.link2.com",
"description": "a short desc",
"label": "link 2 label",
"context": "ITSM",
"target": "_blank"
}
]
}
```
|Field|Description|
|-----|-----------|
|header|MultiLink control header|
|values|Links array|
**Link structure in links array:**
|Field|Description|
|-----|-----------|
|label|Link label|
|action|Link url|
|description|Link Description|
|context|Context or Taxonomy|
## Output Card
```
{
"uiType": "OutputCard",
"group": "DefaultOutputCard",
"templateName": "",
"data": "",
}
```
|
Field
|
Description
|
|---|
|
templateName
|
Card type or Card name
|
|
data
|
json representing card data.**Note:** The data field will be of type string. You need to parse it to use the data.
|
**Large Image With Text**
```
{
"uiType": "OutputCard",
"group": "DefaultOutputCard",
"templateName": "Large image with text",
"data": "{\"image\":\"https://adaptivecards.io/content/cats/1.png\",\"description\":\"Large image description\", \"dataNowSmartLink\":\"W9F4Ld8z\",\"title\":\"Large image\",\"imageAlt\":\"large image alt text\",\"url\":\"\",\"target\":\"_blank\"}",
"smartLinksMetadata": {
"W9F4Ld8z": {
"type": "standard",
"source": "",
"target": "_blank"
}
}
}
```
**Small Image With Text**
```
{
"uiType": "OutputCard",
"group": "DefaultOutputCard",
"templateName": "Small image with text",
"data": "{\"image\":\"https://adaptivecards.io/content/cats/1.png\",\"description\":\"Small image with text description\",\"dataNowSmartLink\":\"i6CL61tN\",\"title\":\"Small image with text\",\"imageAlt\":\"small image alt text\",\"url\":\"\",\"target\":\"_blank\"}",
"smartLinksMetadata": {
"i6CL61tN": {
"type": "standard",
"source": "",
"target": "_blank"
}
}
}
```
**Youtube**
```
{
"uiType": "OutputCard",
"group": "DefaultOutputCard",
"templateName": "Youtube Video Card",
"data": "{\"link\":\"https://empcygiraffe6.service-now.com/va_link.do?token=&target_url=servicenow.com\",\"description\":\"The world works with ServiceNow\",\"id\":\"IWsGk-Kh5ko\",\"title\":\"ServiceNow\",\"url\":\"\",\"target\":\"_blank\"}"
}
```
**Record**
```
{
"uiType": "OutputCard",
"group": "DefaultOutputCard",
"templateName": "Card",
"data": "{\"sys_id\":\"0c5f3cece1b12010f877971dea0b1449\",\"subtitle\":\"INC0008001\",\"dataNowSmartLink\":\"VLzQTN88\",\"title\":\"Incident\",\"fields\":[{\"fieldLabel\":\"Number\",\"fieldValue\":\"INC0008001\"},{\"fieldLabel\":\"Short description\",\"fieldValue\":\"ATF:TEST2\"},{\"fieldLabel\":\"Caller\",\"fieldValue\":\"survey user\"}],\"table_name\":\"incident\",\"url\":\"https://empcygiraffe6.service-now.com/va_link.do?token=target_url=https%3A%2F%2Fempcygiraffe6.service-now.com%2Fsp%3Fsys_id%3D0c5f3cece1b12010f877971dea0b1449%26id%3Dticket%26table%3Dincident\",\"target\":\"_blank\"}",
"smartLinksMetadata": {
"VLzQTN88": {
"type": "standard",
"source": "https://empcygiraffe6.service-now.com/sp?sys_id=0c5f3cece1b12010f877971dea0b1449&id=ticket&table=incident",
"target": "_blank"
}
}
}
```
## Multipart Output
```
{
"uiType": "MultiPartOutput",
"group": "DefaultMultiPartOutput",
"navigationBtnLabel": "Click for more",
"content": {
"uiType": "OutputText",
"value": "multipart text output",
"maskType": "NONE"
}
}
```
|
Field
|
Description
|
|---|
|
navigationBtnLabel
|
Navigation Button label
|
|
content
|
Represents the control defined with multipart.**Note:**
- Content can be OutputText or OutputImage or OutputHtml or OutputLink or OutputCard.
- You must send 'click\_for\_more' as response to move to the next part.
|
## InputText
```
{
"uiType": "InputText",
"group": "DefaultText",
"required": true,
"nluTextEnabled": false,
"entityType": "Text",
"label": "enter something",
"maskType": "NONE"
}
```
|
Field
|
Description
|
|---|
|
label
|
Input text label
|
|
required
|
True or false that indicates whether the control can be skipped or not.
|
|
maskType
|
NONE or SECURE.- NONE indicates normal input.
- SECURE indicates secure input.
|
|
entityType
|
The input is text or email or IP address.
|
|
nluTextEnabled
|
Whether NLU is enabled at this node or not.
|
## Boolean
```
{
"uiType": "Boolean",
"group": "DefaultPicker",
"required": true,
"nluTextEnabled": false,
"entityType": "Boolean",
"label": "select yes/no",
"options": [
{
"label": "Yes",
"value": "yes",
"renderStyle": "data"
},
{
"label": "No",
"value": "no",
"renderStyle": "data"
}
]
}
```
|
Field
|
Description
|
|---|
|
label
|
Boolean control prompt
|
|
required
|
True or false that indicates whether the control can be skipped or not.
|
|
maskType
|
NONE or SECURE.- NONE indicates normal input.
- SECURE indicates secure input.
|
|
entityType
|
Boolean
|
|
nluTextEnabled
|
Whether NLU is enabled at this node or not.
|
|
options
|
Boolean options
|
**Option structure in options array:**
|Field|Description|
|-----|-----------|
|label|Option label|
|value|Option value|
|renderStyle|Data or button|
## Picker
```
{
"uiType": "Picker",
"group": "DefaultPicker",
"required": true,
"nluTextEnabled": false,
"label": "Select an option",
"itemType": "List",
"style": "list",
"multiSelect": false,
"options": [
{
"label": "option 1",
"value": "option 1",
"renderStyle": "data",
"enabled": false
},
{
"label": "option 2",
"value": "option 2",
"renderStyle": "data",
"enabled": false
},
{
"label": "option 3",
"value": "option 3",
"renderStyle": "data",
"enabled": false
}
],
"scriptedData": {
"cardData": "{\"title\":\"Choice - Large image with text\",\"description\":\"Choice - Large image with text description\",\"image\":\"https://adaptivecards.io/content/cats/1.png\",\"imageAlt\":\"alt text\"}",
"cardName": "Large image with text",
"cardTemplate": "",
"renderStyle": "card"
}
}
```
|
Field
|
Description
|
|---|
|
label
|
Picker control prompt
|
|
style
|
List or carousel. Carousel indicates carousel control.
|
|
required
|
True or false that indicates whether the control can be skipped or not.
|
|
maskType
|
NONE or SECURE.- NONE indicates normal input.
- SECURE indicates secure input.
|
|
entityType
|
Boolean
|
|
nluTextEnabled
|
Whether NLU is enabled at this node or not.
|
|
options
|
Boolean options
|
|
scriptedData
|
Represents a card to be displayed along with picker.
|
**Option structure in options array:**
|Field|Description|
|-----|-----------|
|label|Option label|
|value|Option value|
|renderStyle|data or button|
**scriptedData structure:**
|Field|Description|
|-----|-----------|
|cardName|Template name|
|cardData|Card data as json string.|
## Carousel
```
{
"uiType": "Picker",
"group": "DefaultPicker",
"required": true,
"nluTextEnabled": false,
"label": "select an image",
"itemType": "Picture",
"style": "carousel",
"multiSelect": false,
"options": [
{
"label": "name1",
"description": "a description of value_1 item",
"attachment": "https://adaptivecards.io/content/cats/1.png",
"value": "value_1",
"renderStyle": "data",
"enabled": false
},
{
"label": "name2",
"description": "a description of value_2 item",
"attachment": "https://adaptivecards.io/content/cats/1.png",
"value": "value_2",
"renderStyle": "data",
"enabled": false
},
{
"label": "name3",
"description": "a description of value_3 item",
"attachment": "https://adaptivecards.io/content/cats/1.png",
"value": "value_3",
"renderStyle": "data",
"enabled": false
}
],
"scriptedData": null
}
```
|
Field
|
Description
|
|---|
|
label
|
Picker control prompt
|
|
style
|
List or Carousel. Carousel indicates carousel control.
|
|
required
|
True or false that indicates whether the control can be skipped or not.
|
|
maskType
|
NONE or SECURE.- NONE indicates normal input.
- SECURE indicates secure input.
|
|
entityType
|
Boolean
|
|
nluTextEnabled
|
Whether NLU is enabled at this node or not.
|
|
options
|
Boolean options
|
**Option structure in options array:**
|Field|Description|
|-----|-----------|
|label|Option label|
|value|Option value|
|description|description for the option|
|attachment|Picture or image for the option|
## Date
```
{
"uiType": "Date",
"group": "DefaultDate",
"required": true,
"nluTextEnabled": false,
"entityType": "Date",
"label": "test date"
}
```
|Field|Description|
|-----|-----------|
|label|Date control prompt|
|required|True or false that indicates whether the control can be skipped or not.|
|entityType|Date|
|nluTextEnabled|Whether NLU is enabled at this node or not.|
## Time
```
{
"uiType": "Time",
"group": "DefaultDate",
"required": true,
"nluTextEnabled": false,
"entityType": "Time",
"label": "Select time"
}
```
|Field|Description|
|-----|-----------|
|label|Time control prompt|
|required|True or false that indicates whether the control can be skipped or not.|
|entityType|Time|
|nluTextEnabled|Whether NLU is enabled at this node or not.|
## DateTime
```
{
"uiType": "DateTime",
"group": "DefaultDate",
"required": true,
"nluTextEnabled": false,
"entityType": "Time",
"label": "Select time"
}
```
|Field|Description|
|-----|-----------|
|label|Date and Time control prompt|
|required|True or false that indicates whether the control can be skipped or not.|
|entityType|Time|
|nluTextEnabled|Whether NLU is enabled at this node or not.|
## StartConversation
```
{
"uiType": "ActionMsg",
"actionType": "StartConversation",
"conversationId": "e0494b2187332550326d0d05dabb350d"
}
```
|Field|Description|
|-----|-----------|
|uiType|ActionMsg|
|actionType|StartConversation|
Indicates that the conversation has started in Virtual Agent API.
**Parent Topic:**[Using Virtual Agent API](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/conversational-interfaces/virtual-agent/use-virtual-agent-api.md)