Bold360 ai API Articles

Bold360 AI SEO and knowledge-base export API

The SEO and knowledge base export API "pushes" question and answer information from the Bold360 AI knowledge base into the page source.

This way the information becomes visible to search engine bots, resulting in more traffic being driven to the website, and users being able to ask questions via Google, or any other search engine, and being directed straight to your website without using the Bold360 AI widget.

API specifications

The base URL format of the API is the following:

The following is a sample script with all relevant data provided:

General API parameters




username Your Bold360 AI login name. You must have Knowledge Base access privileges to use the API (required) username=john@company

Your Bold360 AI password (required)



The Knowledge Base to export from (required)



The number of items to retrieve



The place in the list from which to start retrieving. For example, use skip=10 to skip the first 10 list items and retrieve the rest.



xml/json (default:xml)


Filter parameters





Set this parameter to true (recommended), to display the most popular articles first in the search results.

Note: Offline articles will not be included if the parameter is set to true.



Displays the most popular answers given by the Bold360 AI widget during the last x days. This parameter does only have an effect if byPopularity is set to true.



Displays answers from a specific label only. You can find this information in Bold360 AI when editing a label.



Displays answers that contain a certain word or phrase.Important: The value of this parameter must be base64 encoded. As it is used in a URL, replace "=" with "_", and "+" with "|". For example, "hello" must be defined as "aGVsbG8_"



Displays answers that have the specified context in category:value format.

You may use more than one category:value pairs separated by commas. For example, Manufacturer:Sony, Device:iPhone **


hY3R1cmVy Ol Nvbn




Format: yyyy-MM-ddTHH:mm.

If used, only articles modified since this date are included.



Includes hidden FAQ articles, which are marked by the "hide this answer from the dynamic FAQ widget" option.


API URL Examples

Full export with stripped body
Articles with the word 'iPhone' in them

XML Response example

<?xml version="1.0" encoding="utf-8"?>
<NanorepExport account='Nanorep' kb='633763325358580000'>
        <article id='633915887117827492' isOffline='False'>
                        <![CDATA[How much does it cost?]]>
                        <![CDATA[<p>For detailed packages &amp; pricing information, <a href="" target="_blank">click here</a></p>]]></body>
        <article id='633915887117827588' isOffline='False'>
                        <context id='Page Type' value='General' />
                        <![CDATA[What is Nanorep?]]>
                        <![CDATA[<p>Bold360 ai is a self-service customer support &amp; service solution. It is designed to improve customer engagement and prevent website or cart abandonment by delivering instant, accurate answers to customers&#39; questions with no waiting queues what so ever.<br />&<br /></p>]]></body>
        <article id='141286' isOffline='False'>
                        <![CDATA[What happens when I exceed the number of questions in a given month?]]>
                        <![CDATA[<p>We understand that due to seasonal changes, promotions or campaigns, there can be spikes in the Q&amp;A&rsquo;s traffic.</p><p>In these cases, it won&#39;t be necessary to upgrade to a premium package.</p><p>However, in cases where there is a consistent increase in Bold360 ai&#39;s usage for more than a month, a notification on the outgrown support package&will be sent to the customer and an upgrade plan will be offered.</p>]]></body>
                <meta skipped='0' exported='3' totalArticles='3'/>

How do I specify Knowledge Base dynamically using an API?

Note: Use this reference for Arcade and Modern widgets.
The following API allows you to specify the name or ID of the Knowledge Base domain to be used.
Important: If you have already customized a domain for the current URL, the API cannot be used.
_nRepData["kb"] = "hebrew";
// or 
_nRepData["kb"] = "496477";

To use the API for a specific widget add the following:

_nRepData["embed"] =
  "kb": "hebrew"


  • Make sure you have a Bold360/Genesys DX account and a Genesys Cloud account.
    Note: If you do not have a Bold360/Genesys DX and/or a Genesys Cloud account, please contact your Genesys representative.
  • Your Genesys cloud org should already have a messenger deployment with Predictive Engagement enabled.
    You can read about how to set up Genesys Messenger here
  • Make sure you have a chat window created on your website. You can read about how to set up a chat window here.


  1. Create an OAuth client in Genesys Cloud
    You can find the process of creating an OAuth client in Genesys here
    Follow the referred process and make sure to select Token Implicit Grant (Browser) as Grant Type.
  2. Obtain your Bold360 account ID
    Your Bold360 ID is necessary to add the Genesys DX proactive chat integration to Genesys Cloud.
    1. Open the Bold360 admin.
    2. Navigate to Channels > Chat > Chat Buttons (Floating). In Chat buttons, click on the Chat button you want to use.
    3. Click HTML.
    4. Click Generate HTML and copy the account ID from the generated HTML. Save this ID for the next steps.

  3. Add the Genesys DX proactive chat integration to your Genesys Cloud organization
    1. In the Genesys Cloud top ribbon, click Admin.
    2. Under Integrations, click Integrations, and search for DX.
    3. Click Install.
    4. In Details, rename the integration if necessary, and then click the Configuration tab.
    5. Paste the previously obtained Bold360 account ID in the Account ID field.

  4. Create an API trigger in Bold360
    This API trigger defines the conditions of an API call to be invoked in order to activate the predictive engagement of the selected Bold360 chat button.
    1. Create a new API setting. Name it “GPE+DX” and click Save

      Follow the API trigger creation process described here. See Task 2: Create an API trigger.
      During the process, make sure to set the following:
            In General
               API Key: Settings Key for Customer Journey Embed
               Item type: Chats
               URL Type: Agent button
               View: Embedded
            In Parameters, select VisitInfo in FIELD.
  5. Create an action map in Genesys Cloud
    1. Create a segment which defines customer characteristics that you want to engage.
    2. Create an action map: follow the process described here.
      During the process, make sure to set the following:
      1. In Configure trigger type, select Genesys DX Bold Chat. The Bold360 Open Action Schema pops up.
      2. In Bold360 Open Action Schema:
        1. Select the Bold360 Account ID you have added to Genesys Cloud in Step 3 from the dropdown menu.
        2. Obtain the Chat button ID and the Website ID from Chat button (Floating) HTML in the Bold360 admin and paste them in the respective fields. Click Finish.
      3. In Set up Trigger, click Select Segments and select the segment you have created in the first step. Click Done.

         Note: Optionally, you can create outcomes before creating the action map. Read more about outcomes here
  6. Creating the iFrame
    1. Host the following HTML file and make it publicly available.

      <!doctype html>
      <html lang="en">
          <meta charset="UTF-8">
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <script src=""></script>

          <title>Customer Journey Embed</title>
      <ul id="data"></ul>
      <p id="status"></p>

      <!-- This page is loaded in an iframe by the Bold360 Agent Workspace when an agent accepts an interaction. -->
      <!-- The page extracts the customerId passed by the parent application and -->
      <!-- uses it to redirect to the customer journey visualisation for that customerId. -->
      <script type="text/javascript">
        const authStorageKey = 'bold_agent_genesys_cloud_auth';
        const redirectStateStorageKey = 'bold_agent_redirect_state';
        const region = getQueryVariable('region');
        const environment = getQueryVariable('environment');  // likely to be undefined most of the time

        function redirectToLoginPage() {
          const redirectUri = getQueryVariable('redirectUri');
          const domain = genesysCloudDomainForRegion(region, environment);
          const clientId = getQueryVariable('clientId');

          const loginUrl = `https://login.${domain}/oauth/authorize?client_id=${clientId}&response_type=token&redirect_uri=${encodeURIComponent(redirectUri)}`;


          window.location.href = loginUrl;

        function getAuthData() {
          let item;
          try {
            const itemStr = localStorage.getItem(authStorageKey) || '{}';
            item = JSON.parse(itemStr);
          } catch (err) {
            console.error('Could not deserialise auth data', err);
            return {};

          return item;

        function setAuthData(authData) {
          return localStorage.setItem(authStorageKey, JSON.stringify(authData));

        function getSavedRedirectState() {
          return localStorage.getItem(redirectStateStorageKey);

        function saveRedirectState() {

        function clearRedirectState() {

        function exec() {
          const hashParams = new URLSearchParams(window.location.hash.slice(1));
          let authData = parseAuthParams(hashParams);

          if (isAuthValid(authData)) {
            window.location.hash = '';
          } else {
            authData = getAuthData();

            if (!isAuthValid(authData)) {
              console.log('redirecting to login page')

          let queryParamsStr =;
          const savedQueryParams = getSavedRedirectState();

          if (savedQueryParams) {
            queryParamsStr = savedQueryParams;

          const queryParams = new URLSearchParams(queryParamsStr);

          // customerId is passed in the VisitInfo custom parameter from Bold360
          const customerId = queryParams.get('VisitInfo');
          if (!customerId) {
            $('#status').text('No customerId found..');

          redirectToGadget(customerId, authData.accessToken, queryParams.get('region'));

        function isAuthValid(authData) {
          return authData && authData.accessToken && authData.expirationTime && authData.expirationTime >;

        function parseAuthParams(params) {
          const auth = {};

          if (params.has('access_token')) {
            auth.accessToken = params.get('access_token');

            const expiresIn = params.get('expires_in');

            if (!isNaN(expiresIn * 1)) {
              auth.expirationTime = + expiresIn * 1000;
            } else { // default of 1 hour expiry
              auth.expirationTime = + 3600 * 1000;
          } else {
            const authToken = getQueryVariable('auth');
            if (authToken) {
              auth.accessToken = authToken;
              // review if this works
              auth.expirationTime = + 3600 * 1000;

          return auth;

        function getQueryVariable(variable) {
          var query = window.location.href.split('?');
          var vars = query[1] ? query[1].split('&') : [];
          for (var i = 0; i < vars.length; i++) {
            var pair = vars[i].split('=');
            if (decodeURIComponent(pair[0]) == variable) {
              return decodeURIComponent(pair[1]);

        function genesysCloudDomainForRegion(region, env) {
          if (env && env === 'dev') {
            return '';
          } else if (env && env === 'test') {
            return '';

          switch (region) {
            case 'euw1':
              return '';
            case 'euc1':
              return '';
            case 'apne1':
              return '';
            case 'apse2':
              return '';
            case 'aps1':
              return '';
            case 'euw2':
              return '';
            case 'cac1':
              return '';
            case 'usw2':
              return '';
            case 'apne2':
              return '';
              return '';

        function redirectToGadget(customerId, accessToken, regionDefined) {
          const domain = genesysCloudDomainForRegion(regionDefined, environment);
          let gadgetUrl = `https://apps.${domain}/journey/gadgets/v0/integration/purecloud-launcher/?gadgetId=holisticCustomerJourney&customerId=${customerId}&customerIdType=cookie`;

          if (accessToken) {
            gadgetUrl += `&accessToken=${accessToken}`;

          window.location.href = gadgetUrl;


    2. Determine your region based on the following table.
      URL Used to access Genesys Region short name use1 usw2 cac1  euc1 euw1  euw2 aps1 apne1 apse2 apne1


    3. Set the API trigger iframe URL to https://<url-to-the-html-file>?clientId=<OAUTH_CLIENT_ID>]&region=<REGION_SHORT_NAME>&redirectUri=https://<url-to-the-html-file>.
  7. Results on the Agent Platform
    Agents can now inspect the customer's journey on the Agent Platform. 
    1. Make sure that Agents are logged into the Genesys Agent Workspace and into Genesys Cloud as well.
    2. Select the icon of the API trigger set in Step 4 in the top ribbon.
    3. The Web visit visualization of the customer is now visible and Agents can get details about each phase of the the customer's journey.

HTTPS will be enforced across all Bold360ai web application touchpoints going forward and HTTP-only widget configurations will no longer be supported as of December 31, 2021

Access to the Genesys DX AI management (* will only be accessible through HTTPS.

Why is this happening?

Encrypted communication is essential for safe transmission of data between the web server and browsers. Unlike HTTP, HTTPS establishes a secure connection by encrypting data. 
If an application does not use HTTPS, it is vulnerable to information disclosure and MITM attacks which attempt to strip encryption between the server and the client.

Changes in the Bold360ai 

After the change is introduced to the servers, you can only reach the servers through HTTPS. Servers are going to deny ALL HTTP requests.

Required actions

Bold360ai admin site
  • Visit your admin site only through HTTPS
  • Update any HTTP protocol bookmarks  to HTTPS.

  If admins try to reach the site through HTTP, the server denies access.

Deployed widgets
  • Redeploy widgets where the configuration does not enforce HTTPS communication.

 Widgets use the protocol of the site visitor, so if the widget does not enforce HTTPS communication, the widget appears broken to the visitor.

 NoteThe change does not affect widgets with enforced HTTPS configuration.

API endpoint calls
  • Update the address of your servers with the HTTPS protocol, so all API calls use the right address.

API calls where the protocol is HTTP get a deny response from the server.


How to create an API key in Bold360 AI

API keys enable you to utilize the API capabilities of Bold360 AI.

An API key is a unique identifier that you can use to integrate other systems like Bold360 Agent with Bold360 AI. You can define multiple API keys, and each one may have its own permissions.

  1. In the AI Console, go to Admin Center > API keys and select Add API Key.

  2. Name your API key at the top of the page.

    Example: If you're creating an API key for integration with Bold360 Agent, you could use the Bold360 Live Chat name.

  3. Under Permissions, select the permissions for this API key.

    Example: If you're creating an API key for integration with Bold360 Agent, grant Write access for all categories.

    Important: If you define Write permissions, restrict access to either IP ranges or referrer domains.
  4. Under Allowed knowledge bases, select the knowledge bases that this API key can access.
  5. Under Allowed IP ranges, you can restrict access to specific IP addresses or ranges.

    Enter either a single IP or a range of IPs. You can define one IP or an IP range per line. If you don't want to apply restrictions, you can indicate by enabling Allow All IP Ranges or by entering

  6. Under Allowed referrers, you may restrict access to requests originating from specific referrer domains.

    Enter one domain per line.

  7. Choose Generate API Key.
What's Next? Copy the API key to use it during setting up the integration. Follow these steps to integrate Bold360 AI with Bold360 Agent.

Ticket Export API

You can use the Bold360 AI Ticket Export API to download ticket data to XML or CSV format.



Name Description
username The username used to log into (user account requires KB manager or admin permission).
password The password used to log into (user account requires KB manager or admin permission).
kb The target Knowledge Base.
label The label ID when you want to export tickets from a specific label.
month The target month, for example 7.
year The target year, for example 2013.
includeText Set to true to include the ticket correspondence.
  • Set to true to return overdue tickets
  • Set to false to return tickets that were not overdue
format Format should be set to one of the following:
  • xml
  • csv

Return values

The returned data will include the list of tickets, and each ticket will include the following information:

  1. Ticket title
  2. Ticket body
  3. Ticket email address
  4. Ticket Status (open or closed)
  5. Ticket Time & Date
  6. Agent Reply Time & Date
  7. Ticket correspondence

Viewing and working on the data in Excel

To view and work on the data in Excel, please follow the steps below:

  1. Browse to the API using your browser.
  2. Right click on the page and "Save As" to a CSV / XML file.
  3. Open the file in Excel.

Bold360 AI Events API for Arcade and Modern widgets

Events API

The Events API allows the customer to hook into various Bold360 AI widget events.

For example, you can use this API to push different Bold360 AI events to a 3rd party BI system (e.g. Universal Analytics) and generate Bold360 AI related Reports.

Note: This API is valid for Arcade and Modern styles only. Please see this guide if you are using a Slim widget.

Supported Events:

  • load: Fires when the widget is fully loaded
  • userStartedTyping: Fires when User starts typing into the search box
  • query: Fires after the user finishes typing and the query is sent to the server
  • incomingSearchResults: Fires when the search results arrive at the widget
    • hasResults(bool) - indicates if results were given to the query.
    • isAutoQuestion(bool) - indicates if the query was an auto question.
    • query(string) - the query asked.
    • results(Json Array) - the results to the query. Each item in the array is a json object: { answerId(string), title(string), body(string) }
  • escalation: Fires when the user performed an escalation (e.g email, chat)
  • like: Fires when the user clicked 'Like' on a search result
// For floating widgets _nRepData["float"] = { //.... // events: { eventName: function(parameters) {} } 
//.... // } 
// For the embedded widgets _nRepData["embed"] = { //.... // events: { eventName: function(parameters) {} } 
//.... // } 
// For both widgets _nRepData[" events "] = { eventName: function(parameters) {} };

Usage Examples:

// Widget loaded: load: function(){alert("widget loaded!");} 
// User started typing: userStartedTyping: 
function(){alert("user started typing");} 
// User asked a question: query: 
function(query, isAutoQuestion){alert("user asked: " + query + ". is auto ? : " + isAutoQuestion);} 
// Incoming search results: incomingSearchResults: 
function(hasResults){alert("incoming search results. has results: " + hasResults);} 
// User performed escalation: escalation: 
function(type, query){alert("Escalation occurred. type: " + type + ". user query: " + query);} 
// User clicked 'Like': like : 
function(query, answer){alert("User liked the answer: " + answer + " for the query: " + query);}

Floating widget script example:

< !--do not modify this script -- > 
< div class='Nanorep_loadingData' id='NanorepProxyContainer' style='position:absolute;top:-500px;left:0px;' >
< /div > 
< script type='text/javascript' >var _nRepData = _nRepData || []; _nRepData['kb'] = '24218399';
 _nRepData['float'] = {account: 'nisim', cdcVersion: 3, cdcFrame: '', 
scriptVersion: '', events: { userStartedTyping: function(){alert("user started typing");}} }
 /* API here */; (function(){var windowLoadFunc = function(){var _nRepData = window._nRepData || [];
_nRepData['windowLoaded'] = true;if (typeof(_nRepData['windowOnload']) === 'function')
 _nRepData['windowOnload']();};if (window.attachEvent)window.attachEvent('onload', windowLoadFunc);
else if (window.addEventListener)window.addEventListener('load', windowLoadFunc, false);
var sc = document.createElement('script');sc.type = 'text/javascript';
sc.async = true;sc.defer = true;sc.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + '';
var _head = document.getElementsByTagName('head')[0];_head.appendChild(sc);})(); 
< /script >

Bold360 AI Events API for Slim and Harmony widgets

The Events API allows the customer to hook into various Bold360 AI widget events. For example, you can use this API to push different Bold360 AI events to a 3rd party BI system (for example Universal Analytics) and generate Bold360 AI-related Reports.

You can use Widget Events API on the page where the widget is implemented as follows:

Nanorep.floatingWidget.on({ // Nanorep.embeddedWidget 
  init : function() { 
  load : function() { 
    this.setContext({ brand: 'Apple' }); 
< /script >

You can find the full list of events and methods here:

Example: Sending customized GA events
/* API here */ 
  init : function() { 
  ask : function(query) {
    ga('send', 'event', { 
      'eventCategory': 'Nanorep Widget', 
      'eventAction': 'Search', 
      'eventLabel': query 
  feedback : function( feedbackInfo , answer ) { 
    var f_message; 
    let type = 'Bad '; 
    if (feedbackInfo.text) { 
      f_message = feedbackInfo.text; 
    } else { 
      switch (feedbackInfo.type) { 
        case 4: 
          f_message = 'Missing or incorrect information'; 

        case 8:
          f_message = 'Answer irrelevant to the page'; 

        case 1: 
            type = 'Good '; 
    ga("send", "event", { 
      'eventCategory': 'Nanorep Widget', 
      'eventAction': type + 'feedback', 
      'eventLabel': f_message, 
      'dimension1': answer // additional custom dimension 
  escalate : function( channel , answer ) { 
    ga('send', 'event', { 
      'eventCategory': 'Nanorep Widget', 
      'eventAction': 'Escalation ' + '[' + channel + ']', 
      'eventLabel': answer }); },
  noResults : function( query ) { 
    ga('send', 'event', { 
      'eventCategory': 'Nanorep Widget', 
      'eventAction': 'No answer', 
      'eventLabel': query 

How to import multiple articles in a batch with the API

You can import a large number of articles in a batch through the API.

Important: If the Dual control of article approval option is enabled for your account, article import through the API is not possible. Contact your Success Manager for more information.
Articles can be imported to the knowledge base through the API when the Enable approval workflow option is enabled for an account. Such articles will be in Published status and they are set live in the knowledge base.
Note: It is not possible to import system labels like Never Published, Draft, Offline or Hide in Support Center.

To learn more about how to import articles through the API, visit our Rest API & SDK Reference.

How do I view audit logs in the system?

In Digital DX AI, audit logs store information about changes made by users, or by an automatic process in the Digital DX AI back-end.

Currently the Digital DX AI audit logs are only available via an API. To export Digital DX AI audit logs, do the following:
  1. Create an API key in your Digital DX AI account to be able to use the Analytics API as described in How to create an API key.

    Example: The following is an example API call:

  2. ReplaceBold360 AI with your Digital DX AI account name.
  3. Replace the API key with the API key code created in Step 1.
  4. Optional: You can define to export only specific events with the API. The following events are available:
    Event type ID
    None 0
    widget_common 1
    widget_embedded 2
    widget_floating 3
    widget_domain 4
    Facebook 5
    Re-channeling 10
    Ticketing 20
    Rules 21
    Signature 22
    SLA 23
    Support page 31
    Users and user groups (12207) 40
    API keys 50
Example: API call for exporting specific events

What are Bold360 AI APIs?

Bold360 AI APIs and SDKs can be used to customize how web and other applications provide chatbot and related services.

Bold360 AI provides the following sets of APIs and SDKs:

  • Web API and SDK: HTML and JavaScript code in your web pages controls how Bold360 AI widgets and custom user interface (UI) components appear and behave. The API provides methods and events that you can control programmatically. The SDK provides access to individual controls that make up the widgets, such as query boxes, FAQ lists, feedback queries, and sharing controls. The API and SDK provide advanced customization that is not available through the Bold360 AI UI.
  • REST API: Your code uses URLs to call HTTPS endpoints on the server. Bold360 AI provides many API endpoints. The server responds by sending a JSONP (JSON with Padding), XML, or CSV response payload. The server also returns standard HTTPS response codes to indicate errors or success.
  • Android SDK: Your Android code uses this SDK to control Bold360 AI widgets in your mobile app.
  • iOS SDK: Your iOS code uses this SDK to control Bold360 AI widgets in your mobile app.

To use Bold360 AI APIs, you'll need an API key. See this article to learn how to create one.


Bold360 21.10 Release Notes

Bold360 21.10 release notes

Bold360 version 21.10 contains the following new enhancements:

Enforcing HTTPS and removing HTTP across widget scripts

Going forward, there will no longer be an option to choose (non-secure) HTTP-only connections when generating widget touchpoint scripts. HTTPS will be enforced across all touchpoints going forward and HTTP-only widget configurations will no longer be supported as of December 31, 2021. Any widget script using HTTP only will need to be changed by this date in order to continue uninterrupted

Access to the Genesys DX AI management (* will only be accessible through HTTPs

In-product announcements will be present to raise awareness of this change

Important: Any widget script using HTTP only will need to be changed by this date in order to continue uninterrupted.

In-Product Rebranding

As part of the transformation to Genesys DX, the product interfaces are now rebranded to reflect this change. Logos, product names, and company links are now updated to Genesys branding and is present within each of the product interfaces.

getEstimatedWaitTime API call

Using the "getEstimatedWaitTime" API call will provide the estimated wait time that the visitor would spend waiting before starting a live chat with an agent.

Details on using this API can be located in this article.

Bold360 21.11 Release Notes

Bold360 version 21.11 contains the following new enhancements:

New KB Launchpad Intent Library for COVID-19/Vaccinations

In order to help businesses with providing just-in-time information related to updates to COVID-19 and vaccination protocols, a new entry in the KB Launchpad is now available with intents that can be used to deploy knowledge to keep your workforce informed of new policies and information that you may need to enforce.

Not familiar with the KB Launchpad? The KB Launchpad contains pre-defined intent libraries to help you add industry and use-case specific questions/intents to your KBs with your own specific responses to help with adding commonly asked questions for newly created KBs.

We will be enabling the KB Launchpad as a default setup option on all accounts shortly but contact your Account or Success Manager to get it enabled early if necessary.

ICO Cookie Compliance

In order to support ICO cookie compliance in regions that require end-user consent for allowing cookies to be set, Genesys DX now complies with this standard by making the tracking and analytics related cookies that are set through the touchpoint and visitor monitoring HTML snippets to be optional.

By default, all cookies will continue to be set upon page load. To restrict these cookies from loading automatically and only upon end-user consent, additional steps will be required on the website that the Genesys DX code is being deployed to.

You can learn more about what this compliance is and how to update your Genesys DX deployment to be compliant by reviewing the details in this article: ICO Cookie Compliance.