Virtual Agent
- OpenAPI Version:
3.1.1 - API Version:
2
Zoom Virtual Agent APIs enable you to build artificial intelligence (AI) and chatbot solutions for your website.
Your website users can expect immediate responses to their queries at any time. As a result, Zoom Virtual Agent deploys support to your users faster and reduces the workload for your live agents.
All endpoints are available through https at api.zoom.us/v2/.
Servers
- URL:
https://api.zoom.us/v2
Operations
Get articles
- Method:
GET - Path:
/km/kbs/{kbId}/articles - Tags: Knowledge Management
Returns multiple knowledge base articles.
Scopes: zva:read:km_kbs
Granular Scopes: zva:read:list_km_articles,zva:read:list_km_articles:admin
Rate Limit Label: LIGHT
Responses
Status: 200 The list of the returned articles.
Content-Type: application/json
-
articlesarray— The list or articles from the knowledge baseItems:
-
categorystring | null— The category of the article. -
contentstring— The content of the article. -
created_atstring, format:date-time— The date and time the article was created. -
excludeboolean, default:false— Whether the article is excluded from being presented as a solution to queries. -
external_idstring | null— The external ID of the article. -
idstring— The ID of the article. -
kb_idstring— The ID of the knowledge base. -
languagestring, possible values:"zh-CN", "zh-TW", "en-US", "en-GB", "en-AU", "en-NZ", "fr-FR", "fr-CA", "pt-PT", "pt-BR", "es-ES", "es-US", "es-MX", "da-DK", "nl-NL", "nl-BE", "en-CA", "fr-BE", "fr-LU", "de-DE", "de-AT", "de-CH", "it-IT", "ja-JP", "ko-KR", "no-NO", "pl-PL", "ro-RO", "ru-RU", "sv-SE", "tr-TR"— The language of the article. -
titlestring— The title of the article. -
updated_atstring, format:date-time— The date and time the article was last updated. -
urlstring | null, format:uri— The URL of the article.
-
-
next_page_tokenstring | null— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. -
page_sizenumber, default:30— The number of records returned within a single API call. -
total_recordsnumber— The total number of all the records available across pages.
Example:
{
"next_page_token": "e9je7r6yxfqlaklt7zz4wzh9",
"page_size": 30,
"total_records": 100,
"articles": [
{
"id": "e9je7r6yxfqlaklt7zz4wzh9",
"external_id": "871b707a-7756-46b6-bfba-36a297ba1e85",
"kb_id": "whelb0q6qe1bpqg6jrw3ismo",
"category": "Foo",
"title": "Article One",
"url": "https://example.com/foo/article1",
"content": "<p>article 1 content with <b>some</b> <i>html</i></p>",
"created_at": "2023-05-12T16:31:22.265Z",
"updated_at": "2023-05-12T21:01:14.07Z",
"exclude": false,
"language": "en-US"
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `33001` <br> Specified KB is not type Custom API. <br> **Error Code:** `33005` <br> Validation failed. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `33000` <br> The knowledge base was not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Create article
- Method:
POST - Path:
/km/kbs/{kbId}/articles - Tags: Knowledge Management
Creates a knowledge base article.
Scopes: zva:write:km_kbs
Granular Scopes: zva:write:km_article,zva:write:km_article:admin
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
content(required)string— The article's content. -
exclude(required)boolean— This field excludes the article from being presented as a solution to queries. -
title(required)string— The article's title. -
categorystring— The article's category. -
external_idstring— The article's external ID. -
languagestring, possible values:"zh-CN", "zh-TW", "en-US", "en-GB", "en-AU", "en-NZ", "fr-FR", "fr-CA", "pt-PT", "pt-BR", "es-ES", "es-US", "es-MX", "da-DK", "nl-NL", "nl-BE", "en-CA", "fr-BE", "fr-LU", "de-DE", "de-AT", "de-CH", "it-IT", "ja-JP", "ko-KR", "no-NO", "pl-PL", "ro-RO", "ru-RU", "sv-SE", "tr-TR"— The article's language. -
urlstring— The article's URL.
Example:
{
"category": "Foo",
"title": "My Article 1",
"url": "https://example.com/foo/article1",
"content": "<p>article 1 content with <b>some</b> <i>html</i></p>",
"exclude": false,
"language": "en-US",
"external_id": "871b707a-7756-46b6-bfba-36a297ba1e85"
}
Responses
Status: 201 Article has been created successfully.
Content-Type: application/json
-
categorystring— The category of the article. -
contentstring— The article's content. -
created_atstring, format:date-time— The date and time the article was created. -
excludeboolean— This field excludes the article from being presented as a solution to queries. -
external_idstring— The article's external ID. -
idstring— The article's ID. -
kb_idstring— The knowledge base's ID. -
languagestring, possible values:"zh-CN", "zh-TW", "en-US", "en-GB", "en-AU", "en-NZ", "fr-FR", "fr-CA", "pt-PT", "pt-BR", "es-ES", "es-US", "es-MX", "da-DK", "nl-NL", "nl-BE", "en-CA", "fr-BE", "fr-LU", "de-DE", "de-AT", "de-CH", "it-IT", "ja-JP", "ko-KR", "no-NO", "pl-PL", "ro-RO", "ru-RU", "sv-SE", "tr-TR"— The article's language. -
titlestring— The title of the article. -
updated_atstring, format:date-time— The date and time the article was last updated. -
urlstring— The article's URL.
Example:
{
"id": "c6o8l4m5xxyyaz0kxiqec6v6",
"kb_id": "whelb0q6qe1bpqg6jrw3ismo",
"category": "Foo",
"title": "Article One",
"url": "https://example.com/foo/article1",
"created_at": "2023-03-21T20:21:30.659Z",
"updated_at": "2023-03-21T20:21:30.659Z",
"exclude": false,
"language": "en-US",
"external_id": "871b707a-7756-46b6-bfba-36a297ba1e85",
"content": "<p>article 1 content with <b>some</b> <i>html</i></p>"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `33001` <br> Specified KB is not type Custom API. <br> **Error Code:** `33002` <br> Too many articles for KB (limit is 5000). <br> **Error Code:** `33005` <br> Validation failed. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `33000` <br> The knowledge base was not found. <br>
Status: 409 **HTTP Status Code:** `409` <br> Conflict **Error Code:** `33003` <br> An article for this KB already exists with external ID "871b707a-7756-46b6-bfba-36a297ba1e85" and language "en". <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Get article
- Method:
GET - Path:
/km/kbs/{kbId}/articles/{articleId} - Tags: Knowledge Management
Returns a knowledge base article.
Scopes: zva:read:km_kbs
Granular Scopes: zva:read:km_article,zva:read:km_article:admin
Rate Limit Label: LIGHT
Responses
Status: 200 The returned article.
Content-Type: application/json
-
categorystring— The category of the article. -
contentstring— The content of the article. -
created_atstring, format:date-time— The date and time the article was created. -
excludeboolean— This field excludes the article from being presented as a solution to queries. -
external_idstring— The external ID of the article. -
idstring— The ID of the article. -
kb_idstring— The ID of the knowledge base. -
languagestring, possible values:"zh-CN", "zh-TW", "en-US", "en-GB", "en-AU", "en-NZ", "fr-FR", "fr-CA", "pt-PT", "pt-BR", "es-ES", "es-US", "es-MX", "da-DK", "nl-NL", "nl-BE", "en-CA", "fr-BE", "fr-LU", "de-DE", "de-AT", "de-CH", "it-IT", "ja-JP", "ko-KR", "no-NO", "pl-PL", "ro-RO", "ru-RU", "sv-SE", "tr-TR"— The language of the article. -
titlestring— The title of the article. -
updated_atstring, format:date-time— The date and time the article was last updated. -
urlstring— The URL of the article's URL.
Example:
{
"id": "c6o8l4m5xxyyaz0kxiqec6v6",
"kb_id": "whelb0q6qe1bpqg6jrw3ismo",
"category": "Foo",
"title": "Article One",
"url": "https://example.com/foo/article1",
"created_at": "2023-03-21T20:21:30.659Z",
"updated_at": "2023-03-21T20:21:30.659Z",
"exclude": false,
"language": "en-US",
"external_id": "871b707a-7756-46b6-bfba-36a297ba1e85",
"content": "<p>article 1 content with <b>some</b> <i>html</i></p>"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `33001` <br> Specified KB is not type Custom API. <br> **Error Code:** `33005` <br> Validation failed. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `33000` <br> The knowledge base was not found. <br> **Error Code:** `33004` <br> The article was not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Update article
- Method:
PUT - Path:
/km/kbs/{kbId}/articles/{articleId} - Tags: Knowledge Management
Updates a knowledge base article.
Scopes: zva:write:km_kbs
Granular Scopes: zva:update:km_article,zva:update:km_article:admin
Rate Limit Label: LIGHT
Request Body
Content-Type: application/json
-
content(required)string— The content of the article. -
exclude(required)boolean, default:false— This field excludes the article from being presented as a solution to queries. -
title(required)string— The title of the article. -
categorystring— The category of the article. -
external_idstring— The external ID of the article. -
languagestring, possible values:"zh-CN", "zh-TW", "en-US", "en-GB", "en-AU", "en-NZ", "fr-FR", "fr-CA", "pt-PT", "pt-BR", "es-ES", "es-US", "es-MX", "da-DK", "nl-NL", "nl-BE", "en-CA", "fr-BE", "fr-LU", "de-DE", "de-AT", "de-CH", "it-IT", "ja-JP", "ko-KR", "no-NO", "pl-PL", "ro-RO", "ru-RU", "sv-SE", "tr-TR"— The language article. -
urlstring— The URL of the article.
Example:
{
"category": "Foo",
"title": "My Article 1",
"url": "https://example.com/foo/article1",
"content": "<p>article 1 content with <b>some</b> <i>html</i></p>",
"exclude": false,
"language": "en-US",
"external_id": "871b707a-7756-46b6-bfba-36a297ba1e85"
}
Responses
Status: 200 The updated article.
Content-Type: application/json
-
categorystring— The category of the article. -
contentstring— The content of the article. -
created_atstring, format:date-time— The date and time the article was created. -
excludeboolean— This field excludes the article from being presented as a solution to queries. -
external_idstring— The external ID of the article. -
idstring— The ID of the article. -
kb_idstring— The ID of the knowledge base. -
languagestring, possible values:"zh-CN", "zh-TW", "en-US", "en-GB", "en-AU", "en-NZ", "fr-FR", "fr-CA", "pt-PT", "pt-BR", "es-ES", "es-US", "es-MX", "da-DK", "nl-NL", "nl-BE", "en-CA", "fr-BE", "fr-LU", "de-DE", "de-AT", "de-CH", "it-IT", "ja-JP", "ko-KR", "no-NO", "pl-PL", "ro-RO", "ru-RU", "sv-SE", "tr-TR"— The language of the article. -
titlestring— The title of the article. -
updated_atstring, format:date-time— The date and time the article was last updated. -
urlstring— The URL of the article.
Example:
{
"id": "c6o8l4m5xxyyaz0kxiqec6v6",
"kb_id": "whelb0q6qe1bpqg6jrw3ismo",
"category": "Foo",
"title": "Article One",
"url": "https://example.com/foo/article1",
"created_at": "2023-03-21T20:21:30.659Z",
"updated_at": "2023-03-21T20:21:30.659Z",
"exclude": false,
"language": "en-US",
"external_id": "871b707a-7756-46b6-bfba-36a297ba1e85",
"content": "<p>article 1 content with <b>some</b> <i>html</i></p>"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `33001` <br> Specified KB is not type Custom API. <br> **Error Code:** `33005` <br> Validation failed. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `33000` <br> The knowledge base was not found. <br> **Error Code:** `33004` <br> The article was not found. <br>
Status: 409 **HTTP Status Code:** `409` <br> Conflict **Error Code:** `33003` <br> An article for this KB already exists with external ID "871b707a-7756-46b6-bfba-36a297ba1e85" and language "en". <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Delete article
- Method:
DELETE - Path:
/km/kbs/{kbId}/articles/{articleId} - Tags: Knowledge Management
Deletes a knowledge base article.
Scopes: zva:write:km_kbs
Granular Scopes: zva:delete:km_article,zva:delete:km_article:admin
Rate Limit Label: LIGHT
Responses
Status: 204 The article is deleted.
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `33001` <br> Specified KB is not type Custom API. <br> **Error Code:** `33005` <br> Validation failed. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `33000` <br> The knowledge base was not found. <br> **Error Code:** `33004` <br> The article was not found. <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Create sync request
- Method:
POST - Path:
/km/kbs/{kbId}/sync - Tags: Knowledge Management
Creates a sync request for the specified knowledge base
Scopes: zva:write:km_kbs
Granular Scopes: zva:update:km_kb:admin
Rate Limit Label: LIGHT
Responses
Status: 201 Default Response
Content-Type: application/json
-
error_code(required)integer | null, possible values:33009, 33008, 33010, 33007— The numerical error code of reason why sync failed (otherwise null). -
error_message(required)string | null— The error message of the reason why a sync failed (otherwise null). -
progress_percent(required)integer | null— The percent progress of the sync. -
started_at(required)string | null, format:date-time— The time the sync started (in ISO 8601 format). -
sync_status(required)string, possible values:"QUEUED", "PENDING", "IN_PROGRESS", "COMPLETED", "FAILED", "ABORTING", "ABORTED"— The status of the sync. -
created_atstring, format:date-time— The time the sync request was created (in ISO 8601 format). -
kb_idstring— The knowledge base's ID. -
sync_idstring— The sync ID. -
updated_atstring, format:date-time— The type the sync progress or status was last updated (in ISO 8601 format).
Example:
{
"sync_id": "a6w6izgus3qlxz6di0vsrv8s",
"kb_id": "whelb0q6qe1bpqg6jrw3ismo",
"sync_status": "IN_PROGRESS",
"progress_percent": 50,
"error_code": 33009,
"error_message": "The sync failed because no articles had any content.",
"created_at": "2025-01-08T13:00:00Z",
"updated_at": "2025-01-08T13:00:00Z",
"started_at": "2025-01-10T13:00:00Z"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Bad Request **Error Code:** `33001` <br> Specified KB is not type Custom API. <br> **Error Code:** `33013` <br> The knowledge base is not enabled <br> **Error Code:** `33005` <br> Validation failed. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found Not Found **Error Code:** `33000` <br> The knowledge base was not found. <br>
Status: 409 **HTTP Status Code:** `409` <br> Conflict Conflict **Error Code:** `33011` <br> A sync is already in progress <br> **Error Code:** `33012` <br> A sync has completed too recently <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Get sync
- Method:
GET - Path:
/km/kbs/{kbId}/sync/{syncId} - Tags: Knowledge Management
Returns the details of a knowledge base sync.
Scopes: zva:read:km_kbs
Granular Scopes: zva:read:km_kb:admin
Rate Limit Label: LIGHT
Responses
Status: 200 Default Response
Content-Type: application/json
-
error_code(required)integer | null, possible values:33009, 33008, 33010, 33007— The numerical error code of reason why sync failed (otherwise null). -
error_message(required)string | null— The error message of reason why sync failed (otherwise null). -
progress_percent(required)integer | null— The percent progress of the sync. -
started_at(required)string | null, format:date-time— The time the sync started (in ISO 8601 format). -
sync_status(required)string, possible values:"QUEUED", "PENDING", "IN_PROGRESS", "COMPLETED", "FAILED", "ABORTING", "ABORTED"— The status of the sync. -
created_atstring, format:date-time— The time the sync request was created (in ISO 8601 format). -
kb_idstring— The knowledge base's ID. -
sync_idstring— The sync ID. -
updated_atstring, format:date-time— The type the sync progress or status was last updated (in ISO 8601 format).
Example:
{
"sync_id": "a6w6izgus3qlxz6di0vsrv8s",
"kb_id": "whelb0q6qe1bpqg6jrw3ismo",
"sync_status": "IN_PROGRESS",
"progress_percent": 50,
"error_code": 33009,
"error_message": "The sync failed because no articles had any content",
"created_at": "2025-01-10T13:00:00Z",
"updated_at": "2025-01-10T13:00:00Z",
"started_at": "2025-01-12T15:00:00Z"
}
Status: 404 **HTTP Status Code:** `404` <br> Not Found Default Response **Error Code:** `33014` <br> The knowledge base or sync request was not found <br>
Get ZVA engagements
- Method:
GET - Path:
/virtual_agent/report/engagements - Tags: Report
Generates a list of ZVA engagements.
Scopes: zva_report:read,zva_report:read:admin
Granular Scopes: zva:read:list_engagements:admin
Rate Limit Label: HEAVY
Responses
Status: 200 **HTTP Status Code:** `200` <br> ZVA engagements successfully returned.
Content-Type: application/json
-
engagementsarray— The information about the engagements.Items:
-
agent_messages_sentinteger— Number of messages sent by the Virtual Agent during the conversation. -
agentsarray— This list of agents involved in this engagementItems:
-
agent_idstring— The internal ID of the agent. -
agent_namestring— The agent name entered by the user. -
agent_typestring, possible values:"AI_VOICE", "AI_CHAT", "CHAT"— The type of the agent used in the engagement. -
agent_version_idstring— Internal version ID of AI agent. -
agent_version_numberinteger— Version number of AI agent.
-
-
articlesarray— The list of articles AI agent used in this engagement.Items:
string— The title of the article AI agent used in this engagement. -
campaign_namestring— The engagement's campaign name. -
consumer_idstring— The consumer iD of the engagement -
consumer_messages_sentinteger— Number of messages sent by the consumer during the conversation. -
deletedboolean— Whether the status engagement is deleted or not. -
durationinteger— The duration of the engagement in seconds. -
end_timestring, format:date-time— The engagement's end time and date in **yyyy-MM-dd'T'HH:mm:ss'Z'** format. -
engagement_idstring— The engagement's ID. -
escalation_reasonstring, possible values:"Escalation by design", "Escalation requested"— Whether the escalation was requested or by design. **Marked for removal at the end of January 2026.** -
global_variablesarray— The information about the engagement's global variables. Marked for removal. Recommended to use the new **Variables API** instead.Items:
-
group_idstring— The global variable's group ID. -
group_namestring— The global variable's group name. -
need_maskboolean— If the global variable needs a mask. -
need_storeboolean— If the global variable needs a store. -
typestring— The global variable's type. -
valuestring— The global variable's value. -
variable_idstring— The global variable's ID. -
variable_namestring— The global variable's name.
-
-
implicit_resolutionstring, possible values:"RESOLVED", "NOT_RESOLVED"— Whether the consumer's issue was implicitly resolved by the virtual agent. **This is field is available only if it is enabled for the account.** -
intent_summaryobject— The summary of the matched custom intents in the engagement.-
countinteger— The total count of the matched engagement's intents. -
intents_matchedarray— The matched custom intents in the engagement.Items:
-
accuracynumber— The intent's accuracy, from 0 to 1. 0.5 means this intent has 50% accuracy. -
intent_idstring— The intent's ID -
intent_namestring— The intent's name. -
intent_typestring, possible values:"custom_intent", "small_talk", "default_intent", "faq", default:"default_intent"— The intent's type. * `custom_intent` * `small_talk` * `default_intent` * FAQ -
system_intentboolean— Whether this record belongs to the system intent.
-
-
-
interaction_durationinteger— The total number of seconds of interaction between the AI agent and the consumer. -
interaction_turnsinteger— The total number of conversation exchanges between the Consumer and AI Agent. -
language_codestring, possible values:"en-GB", "en-US", "ar", "da-DK", "de-DE", "es-ES", "es-MX", "fr-CA", "fr-FR", "it-IT", "ja", "ko-KR", "nl-NL", "pt-BR", "pt-PT", "ru", "zh-CN", "zh-HK", default:"en-US"— The language code for the engagement. -
last_responderstring, possible values:"AI Agent", "Consumer", "Chatbot"— The entity that responded the last in this conversation. -
launch_urlstring— The URL of the transcript of the engagement, such as a link to the transcript as a secured embeddable web page. -
outcomestring— The outcome of the engagement. -
query_detailsarray— The engagement's query details.Items:
-
articlesarray— The query's articles.Items:
-
answerstring— The article's answer. -
idstring— The article's ID. -
kb_detailsarray— The article's knowledge base detail list.Items:
-
kb_groupsarray— The article's knowledge base group.Items:
-
idstring— The knowledge base group ID. -
namestring— The knowledge base group name.
-
-
kb_idstring— The knowledge base's ID. -
kb_namestring— The knowledge base's name.
-
-
scorenumber— The article's socre, from 0 to 1. -
titlestring— The article's title. -
urlstring— The article's URL.
-
-
bot_idstring— The bot's ID that the engagement uses. -
bot_session_idstring— The bot session's ID. -
engagement_idstring— The engagement's ID. -
intentsarray— The intents associated with the query.Items:
-
accuracynumber— The intent's accuracy. From 0 to 1. (e.g. 0.5 means this intent has 50% accuracy.) -
intent_idstring— The intent's ID -
intent_namestring— The intent's name. -
intent_typestring, possible values:"custom_intent", "small_talk", "default_intent", "faq", default:"default_intent"— The intent's type. * `custom_intent` * `small_talk` * `default_intent` * FAQ -
system_intentboolean— Whether this record belongs to the system intent.
-
-
language_codestring, possible values:"en-GB", "en-US", "ar", "da-DK", "de-DE", "es-ES", "es-MX", "fr-CA", "fr-FR", "it-IT", "ja", "ko-KR", "pt-BR", "pt-PT", "ru", "zh-CN", "zh-HK", "nl-NL", default:"en-US"— The language code for the query. -
query_idstring— The query's ID. -
query_textstring— The query's text. -
query_timestring, format:date-time— The date and time when the query started in ISO 8601 format (**yyyy-MM-dd'T'HH:mm:ss'Z'** or **yyyy-MM-dd'T'HH:mm:ss**).
-
-
query_summaryobject— The summary of queries in an engagement.-
countinteger— The total count of the engagement's query IDs. -
query_idsarray— The engagement's query IDs.Items:
string— The engagement's query ID.
-
-
skillsarray— The list of skills AI agent invoked in this engagement.Items:
string— The name of the skill AI agent used in this engagement. -
source_typesarray— The list of sources from where the engagement originates.Items:
string, possible values:"ZCC", "ZCC_AI_AGENT", "ZP", "AMAZON", "GENESYS", "WEB_SDK", "WEB_SDK_SIMULATOR", "WEB_SDK_PREVIEW", "WEB_SDK_AI_AGENT", "WEB_SDK_AI_AGENT_PREVIEW", "MOBILE", "MOBILE_AGENT", "TEAM_CHAT_BETA", "TEAM_CHAT_CHANNEL", "ZECO", "ZECO_HEADLESS", "CHAT", "WHATSAPP", "SMS", "TEAM_CHAT", "FACEBOOK_MESSENGER", "INSTAGRAM"— The enum value for the source type. -
start_timestring, format:date-time— The engagement's start time and date in **yyyy-MM-dd'T'HH:mm:ss'Z'** format. -
toolsarray— The list of tools AI agent used in this engagement.Items:
string— The name of the tool AI agent used in this engagement. -
topicsarray— The list of topics AI agent detected in this engagement.Items:
string— The name of the topic AI agent used in this engagement. -
transfer_acceptedboolean— Whether the transfer was accpeted by the agent or not. -
user_phone_numberstring— The phone number of the user.
-
-
fromstring, format:date-time— The start time and date in **yyyy-mm-dd** or **yyyy-MM-dd'T'HH:mm:ss'Z'** format. The defined date range should be a month, as the response only includes one month's worth of data. If no start date is specified, it returns data from the past 24 hours. -
next_page_tokenstring— The next page token paginates through a large set of results. It returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. -
page_sizeinteger, default:10— The number of records returned within a single API call. Constraints: Max: 100 Default: 10 -
timezonestring— The call's [timezone ID](https://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists/#timezones). The default is **UTC**. -
tostring, format:date-time— **Required** only when the **from** parameters is specified. The end time and date in **yyyy-mm-dd** or **yyyy-MM-dd'T'HH:mm:ss'Z'** format, the same format as the **from** parameter. -
total_recordsinteger— The total number of all the records available across pages.
Example:
{
"next_page_token": "ngLawmAGlYagy37vLJtKMM4TkMnagfqWm73",
"page_size": 10,
"total_records": 44,
"timezone": "UTC",
"engagements": [
{
"engagement_id": "NF1kPajwRCGa9-cgHWGAQw",
"start_time": "2023-07-11T22:17:49Z",
"duration": 25,
"campaign_name": "campaignA",
"outcome": "assistanceRequested",
"launch_url": "https://zoom.us",
"intent_summary": {
"intents_matched": [
{
"intent_id": "sbyW0BwLTUSKGzDsqcfnCQ",
"intent_name": "Contact Support copy",
"intent_type": "faq",
"accuracy": 0.5,
"system_intent": true
}
],
"count": 10
},
"language_code": "en-US",
"end_time": "2023-07-12T22:17:49Z",
"consumer_id": "KuwgnuP7RgSJAN3Kjaw_uQ",
"deleted": true,
"agents": [
{
"agent_type": "AI_VOICE",
"agent_id": "QF0l7by1TfuIteSJfleVdg",
"agent_name": "HappyBot AI Agent",
"agent_version_id": "Mn8m2c4ERrWrzZ9SqjNHMQ",
"agent_version_number": 8
}
],
"tools": [
"End_Conversation"
],
"skills": [
"Route_To_Demo"
],
"articles": [
"Can I edit my chat welcome screen?"
],
"topics": [
"Weather Inquiry"
],
"last_responder": "Consumer",
"interaction_duration": 25,
"interaction_turns": 7,
"user_phone_number": "+12097899000",
"source_types": [
"ZCC_AI_AGENT"
],
"transfer_accepted": true,
"implicit_resolution": "RESOLVED",
"agent_messages_sent": 3,
"consumer_messages_sent": 2
}
],
"from": "2023-07-01T00:00:00Z",
"to": "2023-07-02T23:59:59Z"
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Get ZVA query details
- Method:
GET - Path:
/virtual_agent/report/engagements/query_details - Tags: Report
Returns a list of ZVA engagement query details.
Scopes: zva_report:read,zva_report:read:admin
Granular Scopes: zva:read:list_queries:admin
Rate Limit Label: HEAVY
Responses
Status: 200 **HTTP Status Code:** `200` <br> ZVA engagement query details successfully returned.
Content-Type: application/json
-
engagement_query_detailsarray— The list for the engagement query details.Items:
-
engagement_idstring— The engagement's ID. -
query_detailsarray— The query details list that belong to the engagement.Items:
-
agent_idstring— The ID of the agent used in the query. This field is available only when the agent type in the engagement is either **AI_VOICE** or **AI_CHAT**. -
agent_namestring— The name of the agent in the query. This field is available only when the agent type in the engagement is either **AI_VOICE** or **AI_CHAT**. -
agent_session_idstring— The session ID of the agent in the query. This field is available only when the agent type in the engagement is either **AI_VOICE** or **AI_CHAT**. -
agent_typestring, possible values:"AI_VOICE", "AI_CHAT"— The type of the agent used in the query. This field is available only when the agent type in the engagement is either **AI_VOICE** or **AI_CHAT**. -
articlesarray— The query's articles.Items:
-
article_answerstring— The article's answer. -
article_idstring— The article's ID. -
article_scorenumber— The article's score from 0 to 1. -
article_titlestring— The article's title. -
article_urlstring— The article's URL. -
helpful_responsestring, possible values:"Yes", "No", "No Response"— Whether the article is helpful. -
is_helpfulboolean— Whether the article is helpful. -
kb_detailsarray— The list for the article's knowledge base details.Items:
-
kb_groupsarray— The article's knowledge base group.Items:
-
group_idstring— The knowledge base group ID. -
group_namestring— The knowledge base group name.
-
-
kb_idstring— The knowledge base's ID. -
kb_namestring— The knowledge base's name.
-
-
-
bot_idstring— The bot's ID that the query uses. This field is available only when the agent type in the engagement is **CHAT**. -
bot_namestring— The bot's name. This field is available only when the agent type in the engagement is **CHAT**. -
bot_session_idstring— The bot session's ID. This field is available only when the agent type in the engagement is **CHAT**. -
deletedboolean— Whether the status query is deleted or not. -
intentsarray— The intents associated with the query.Items:
-
accuracynumber— The intent's accuracy. From 0 to 1. (e.g. 0.5 means this intent has 50% accuracy.) -
intent_idstring— The intent's ID. -
intent_namestring— The intent's name. -
intent_typestring, possible values:"custom_intent", "small_talk", "default_intent", "faq", default:"default_intent"— The intent's type. -
system_intentboolean, default:true— Whether this record belongs to the system intent.
-
-
language_codestring, possible values:"en-GB", "en-US", "ar", "da-DK", "de-DE", "es-ES", "es-MX", "fr-CA", "fr-FR", "it-IT", "ja", "ko-KR", "pt-BR", "pt-PT", "ru", "zh-CN", "zh-HK", "nl-NL", default:"en-US"— The language code for the query. -
query_idstring— The query's ID. -
query_textstring— The query's text. -
query_timestring, format:date-time— The date and time when the query started in ISO 8601 format (**yyyy-MM-dd'T'HH:mm:ss'Z'** or **yyyy-MM-dd'T'HH:mm:ss**). -
topic_namestring— The name of the topic used in the query.
-
-
-
fromstring, format:date-time— The start time and date in **yyyy-mm-dd** or **yyyy-MM-dd'T'HH:mm:ss'Z'** format. The defined date range should be a month, as the response only includes one month's worth of data. If no start date is specified, it returns data from the past 24 hours. -
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. -
page_sizeinteger, default:10— The number of records returned within a single API call. Constraints: Max: 100 Default: 10 -
timezonestring— The call's [timezone ID](https://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists/#timezones). The default is **UTC**. -
tostring, format:date-time— This field is **required** only when the **from** parameter is specified. The end time and date is in **yyyy-mm-dd** or **yyyy-MM-dd'T'HH:mm:ss'Z'** format, which is the same format as the **from** parameter. -
total_recordsinteger— The total number of all the records available across pages.
Example:
{
"from": "2023-07-01T00:00:00Z",
"to": "2023-07-02T23:59:59Z",
"next_page_token": "ngLawmAGlYagy37vLJtKMM4TkMnagfqWm73",
"page_size": 10,
"total_records": 22,
"timezone": "UTC",
"engagement_query_details": [
{
"engagement_id": "NF1kPajwRCGa9-cgHWGAQw",
"query_details": [
{
"query_id": "0b883910-0783-4383-9dcf-b5c9ba315438",
"bot_id": "FZOKnPjmTse9ISSvQN4Zjg",
"bot_name": "Chatbot",
"bot_session_id": "ioknax-4siqztcqwga0xug",
"query_time": "2023-07-11T22:17:49Z",
"language_code": "en-US",
"query_text": "Route 1",
"intents": [
{
"intent_id": "sbyW0BwLTUSKGzDsqcfnCQ",
"intent_name": "Contact Support copy",
"intent_type": "faq",
"accuracy": 0.5,
"system_intent": false
}
],
"articles": [
{
"article_id": "-0zryh7dTEyY9HADPHm_dA",
"article_title": "Can I edit my chat welcome screen?",
"article_url": "https://docs.google.com/",
"is_helpful": true,
"article_score": 0.5,
"kb_details": [
{
"kb_id": "0zryh7dTEyY9HADPHm_dA",
"kb_name": "default knowledge base"
}
],
"helpful_response": "No Response"
}
],
"deleted": true,
"topic_name": "Check refund status",
"agent_id": "jSeZPyVUQamm7WSVZWpExA",
"agent_name": "HappyBot Agent",
"agent_type": "AI_VOICE",
"agent_session_id": "vXd6K1SPSz2WSTz0t3wuRg"
}
]
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1002` <br> Unable to fetch query details. <br>
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> Engagement does not exist: $engagement_ids <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rest/rate-limits/).
Get ZVA variable details
- Method:
GET - Path:
/virtual_agent/report/engagements/variables - Tags: Report
Get a list of ZVA engagement variable details.
Scopes: zva_report:read,zva_report:read:admin
Granular Scopes: zva:read:list_variables:admin
Rate Limit Label: HEAVY
Responses
Status: 200 **HTTP Status Code:** `200` <br> ZVA engagement variable details successfully returned.
Content-Type: application/json
-
engagement_variable_detailsarray— The list of engagements and its variable details.Items:
-
engagement_idstring— The engagement ID. -
variable_detailsarray— The list of variable details belonging to the given engagement ID.Items:
-
group_idstring— The ID of the group to which the variable belongs to. -
group_namestring— The name of the group to which the variable belongs to. -
namestring— The name of the variable. -
need_maskboolean— Whether the value of the variable needs masking to protect sensitive data. -
submitted_atstring— The date and time stamp when the variable was submitted during the engagement in **yyyy-mm-dd** or **yyyy-MM-dd'T'HH:mm:ss'Z'** format. -
typestring, possible values:"String", "Number", "Boolean", "DateTime", "Currency", "Percent", "Email", "URL", "Phone", "CustomEntity", "SystemEntity"— The type of the variable. Type Array and Json are not stored. -
valuestring— The value of the variable. It is always a **string**. -
variable_idstring— The ID of the variable.
-
-
-
fromstring, format:date-time— The start time and date in **yyyy-mm-dd** or **yyyy-MM-dd'T'HH:mm:ss'Z'** format. The defined date range should be a month, as the response only includes one month's worth of data. If no start date is specified, it returns data from the past 24 hours. -
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. -
page_sizeinteger, default:10— The number of records returned within a single API call. Constraints: Max: 100 Default: 10 -
timezonestring— The call's [timezone ID](https://developers.zoom.us/docs/api/references/abbreviations/#timezones). The default is **UTC**. -
tostring, format:date-time— This field is **required** only when the **from** parameter is specified. The end time and date is in **yyyy-mm-dd** or **yyyy-MM-dd'T'HH:mm:ss'Z'** format, which is the same format as the **from** parameter. -
total_recordsinteger— The total number of all the records available across pages.
Example:
{
"from": "2023-07-01T00:00:00Z",
"to": "2023-07-02T23:59:59Z",
"next_page_token": "ngLawmAGlYagy37vLJtKMM4TkMnagfqWm73",
"page_size": 10,
"total_records": 22,
"timezone": "UTC",
"engagement_variable_details": [
{
"engagement_id": "G9wepeWxQAO7o0M6AJw2AA",
"variable_details": [
{
"variable_id": "f15c3714-4c24-4fc1-b4e6-4f0702b5398f8b2a93e9-3125-4044-8cd6-06ce7f582de8",
"type": "Number",
"name": "startTime",
"value": "1736866627040",
"need_mask": true,
"group_id": "1fb58719-22f3-439f-88e2-96c069347331",
"group_name": "Engagement",
"submitted_at": "2025-11-04T02:46:45Z"
}
]
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request **Error Code:** `1002` <br> Unable to fetch variable details <br>
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized Missing or invalid authentication
Status: 404 **HTTP Status Code:** `404` <br> Not Found **Error Code:** `1001` <br> Engagement does not exist: $engagement_ids <br>
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Get ZVA Surveys
- Method:
GET - Path:
/virtual_agent/report/surveys - Tags: Report
Returns a list of ZVA engagement surveys.
Scopes: zva_report:read,zva_report:read:admin
Granular Scopes: zva:read:list_surveys:admin
Rate Limit Label: HEAVY
Responses
Status: 200 **HTTP Status Code:** `200` <br> ZVA engagement surveys successfully returned.
Content-Type: application/json
-
fromstring, format:date-time— The start time and date in **yyyy-mm-dd** or **yyyy-MM-dd'T'HH:mm:ss'Z'** format. The defined date range should be a month, as the response only includes one month's worth of data. If no start date is specified, it returns data from the past 24 hours. -
next_page_tokenstring— The next page token paginates through a large set of results. A next page token returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. -
page_sizeinteger, default:10— The number of records returned within a single API call. Constraints: Max: 100 Default: 10 -
surveysarray— The list of surveys.Items:
-
agent_typestring— The type of the virtual agent. -
consumerstring— The name of the consumer. -
engagement_idstring— The engagement ID of the survey. -
resultsarray— The results of the survey.Items:
-
answerstring— The answer to the question. -
questionstring— A question in the survey.
-
-
start_timestring— The start time of the survey. -
submitted_timestring— The submitted time of the survey. -
survey_idstring— The ID of the survey. -
survey_namestring— The name of the survey. -
virtual_agentstring— The name of the virtual agent.
-
-
timezonestring— The call's [timezone ID](https://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists/#timezones). The default is **UTC**. -
tostring, format:date-time— This field is **required** only when the **from** parameter is specified. The end time and date is in **yyyy-mm-dd** or **yyyy-MM-dd'T'HH:mm:ss'Z'** format, which is the same format as the **from** parameter. -
total_recordsinteger— The total number of all the records available across pages.
Example:
{
"from": "2025-10-01T00:00:00Z",
"to": "2025-10-29T23:59:59Z",
"next_page_token": "ngLawmAGlYagy37vLJtKMM4TkMnagfqWm73",
"page_size": 10,
"total_records": 30,
"timezone": "UTC",
"surveys": [
{
"survey_id": "r8DUXy4BSbO-UQ5ylOUyLg",
"survey_name": "voice survey",
"engagement_id": "N-ecLZBoS-ayCabdwDQSrA",
"agent_type": "Voice",
"virtual_agent": "voice agent",
"consumer": "consumer",
"start_time": "2025-09-03T05:52:22Z",
"submitted_time": "2025-09-03T05:55:22Z",
"results": [
{
"question": "What color do you like?",
"answer": "green"
}
]
}
]
}
Status: 400 **HTTP Status Code:** `400` <br> Bad Request Unable to fetch survey results.
Status: 401 **HTTP Status Code:** `401` <br> Unauthorized Missing or invalid authentication.
Status: 404 **HTTP Status Code:** `404` <br> Not Found Survey results do not exist.
Status: 429 **HTTP Status Code:** `429` <br> Too Many Requests. For more information, see [rate limits](https://developers.zoom.us/docs/api/rate-limits/).
Get ZVA transcripts
- Method:
GET - Path:
/virtual_agent/report/transcripts - Tags: Report
Generates a list of ZVA transcripts.
Scopes: zva_report:read,zva_report:read:admin
Granular Scopes: zva:read:list_transcripts:admin
Rate Limit Label: HEAVY
Responses
Status: 200 **HTTP Status Code:** `200` <br> ZVA transcripts successfully returned.
Content-Type: application/json
-
fromstring, format:date-time— The start time and date in **yyyy-mm-dd** or **yyyy-MM-dd'T'HH:mm:ss'Z'** format. The defined date range should be a month, as the response only includes one month's worth of data. If no start date is specified, returns data from the past 24 hours. -
next_page_tokenstring— The next page token paginates through a large set of results. It returns whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes. -
page_sizeinteger, default:10— The number of records returned within a single API call. Constraints: Maximum - 100, Default - 10 -
timezonestring— The call's [timezone ID](https://marketplace.zoom.us/docs/api-reference/other-references/abbreviation-lists/#timezones). The default is **UTC**. -
tostring, format:date-time— **Required** only when the **from** parameter is specified. The end time and date in **yyyy-mm-dd** or **yyyy-MM-dd'T'HH:mm:ss'Z'** format, in the same format as the **from** parameter. -
total_recordsinteger— The total number of all the records available across pages. -
transcriptsarray— The information about the transcripts.Items:
-
channelstring, possible values:"Chat Agent", "Voice Agent", "Classic ChatBot"— The engagement's channel type. -
end_timestring, format:date-time— The engagement's end time and date in **yyyy-MM-dd'T'HH:mm:ss'Z'** format. -
engagement_idstring— The engagement's ID. -
interaction_durationinteger— The total number of seconds of interaction between the AI agent and the consumer. -
messagesarray— A list of messages.Items:
-
kb_articlesarray— A list of knowledge base articles involved in generating the message.Items:
-
titlestring— The title of the article. -
urlstring— The article URL.
-
-
message_typestring— The Ttpe of the message. -
senderstring, possible values:"AI Agent", "Bot", "Consumer"— The sender of the message. -
textstring— The message content. -
timestampstring, format:date-time— The message sent time and date in **yyyy-MM-dd'T'HH:mm:ss'Z'** format.
-
-
start_timestring, format:date-time— The engagement's start time and date in **yyyy-MM-dd'T'HH:mm:ss'Z'** format. -
total_durationinteger— The duration of the engagement in seconds.
-
Example:
{
"next_page_token": "ngLawmAGlYagy37vLJtKMM4TkMnagfqWm73",
"page_size": 10,
"total_records": 44,
"timezone": "UTC",
"transcripts": [
{
"engagement_id": "akNPVkF0ShCG-X5dY2Nd0Q",
"channel": "Chat Agent",
"start_time": "2023-07-11T22:17:30Z",
"total_duration": 25,
"interaction_duration": 20,
"end_time": "2023-07-12T22:17:55Z",
"messages": [
{
"sender": "AI Agent",
"timestamp": "2023-07-12T22:17:49Z",
"message_type": "text",
"text": "Message in the conversation",
"kb_articles": [
{
"title": "Creating and Scheduling Meetings.",
"url": "https://support.zoom.com/article_1"
}
]
}
]
}
],
"from": "2023-07-01T00:00:00Z",
"to": "2023-07-02T23:59:59Z"
}