Predictive Experience API Overview

Authentication and other general information


Verint XM Developer Portal content is now hosted on Verint Connect. The website will not be available after January 2023. To view the latest Predictive Experience Public API content, click here.

APIs Offered

Predictive Experience offers a variety of APIs to allow you to work with your data. Follow the links for more details on each.

API Access Requirements

This article provides general information on connecting to these APIs.

Invoking OAuth Calls

To make Public API Calls, you must first obtain an OAuth2 Access Token using your Client Credentials. Predictive Experience supports the OAuth2 Client Credentials Flow only. Therefore, Public API Calls must be from server-side applications that can confirm the confidentiality of the credentials. The OAuth2 end point is served from a /token resource with grant_type and scope as two mandatory parameters. The grant_type query parameter has a value of client_credentials and whatever scope you need to access the eventual APIs. The scope for CX APIs is r_cx_basic.

To make the token request, you must pass an Authorization header that is formed by Base64 encoding of consumer key:consumer secret and adding Basic and a space before that.

**Example:** Basic WEpLbmhrVEtQTnRLdlVNaEs1Vk5kM01XSTlWSTBRem46OEE2VFllN1JYczN0cE1KOW1EVzg=

Note: There is a space between "Basic" and "WEpLbm...1EVzg=" above. In this example, WEpLbm...1EVzg= is obtained by concatenating the Consumer Key and Secret only separated by a colon, and then applying Base 64 encoding.

Please familiarize yourself with the OAuth2 Client Credentials Flow. The Predictive Experience server is a standard implementation of this flow.

If you are using the SDK, then you only need to do the following:

inal AuthClient authClient = new AuthClient(Environment.DEVELOPMENT);
String accessToken = authClient.authenticateUsingClientCredentials(,,, false);

As you can see, the AuthClient needs the environment. Based on that, the Base URI changes since we have end points for DEV/QA/Staging and Production.

Invoking API Calls

Once you have obtained an Access Token, you can make any of the Public API Calls by sending the required headers and respect the contract of the API. The Access Token itself goes in the Authorization header prefixed by the word Bearer.

**Example:** Bearer 54c76b50-472f-4010-a3be-f06811e16a04

In this example, the value 54c76b50-472f-4010-a3be-f06811e16a04 is the Access Token.

If you are using the SDK, then you only need to do the following:

//*/* Initialize the CX Measures client /*/
final CxMeasuresClient cxMeasuresClient = new CxMeasuresClient(Environment.DEVELOPMENT, true);

MeasuresCollection measuresCollection = cxMeasuresClient.getMeasures(accessToken);
MeasureDefinition measureDefinition = cxMeasuresClient.getMeasurementDefinition(accessToken,, false,false);

This example is for getting the list of measures and measurement definition.

Example of invoking API calls in Java using HTTP Client

The following code snippet is an OAuth2 Token API Call which shows the mechanics of making a REST Call:

//*/* Build the Authorization header which is essentially a Base64 encoded value of consumer key: consumer secret pair /*/
String combinedCredentials = consumerKey + ":" + consumerSecret;
String base64EncodedHeader = BaseEncoding.base64().encode(combinedCredentials.getBytes());
String authHeader = AUTHORIZATION_HEADER_PREFIX_BASIC + base64EncodedHeader;
//*/* Build the Url - The Token URL is /*/
String baseUrl = buildTokenUrl();
String url = new StringBuilder(baseUrl).append("?grant_type=").
//*/* Add the headers needed to set the media type and Authorization /*/
Map<String, String> headers = new HashMap<String, String>();
headers.put(AUTHORIZATION_HEADER, authHeader);
//*/* Make the HTTP Request /*/
HttpClient client = new UrlHttpClient(new ClientConfiguration());
try {
    HttpRequest httpRequest = new HttpRequest("POST",
            new URI(url),
            headers, (InputStream)null);
    HttpResponse httpResponse = client.execute(httpRequest);
    //*/* If status code is 200 then your call was successful /*/
    if (httpResponse.getStatusCode() == 200) {
        //*/* Use a convenient JSON marshalling / unmarshalling library to marshal from Json to Java /*/
        Gson gson = new Gson();
        JsonReader reader = new JsonReader(new InputStreamReader(httpResponse.getContent()));
        OAuth2TokenResponse tokenResponse = gson.fromJson(reader,OAuth2TokenResponse.class);
        String accessToken = tokenResponse.getAccessToken();
        return accessToken;
    } else {
        throw ApiAuthenticationException.builder().
                message("Encountered an exception performing authentication").build();
} catch (URISyntaxException e) {

Invoking API calls with Predictive Experience Java SDK


Predictive Experience Java SDK

This SDK is for the CX Measures Export API only.

Predictive Experience offers a Java SDK for making API Calls using a strongly typed interface. SDKs are grouped by category of API, each product having a separate SDK. When using Maven or Gradle, you can find the Java SDK on Maven Central by searching for the following artifact:


Please note that the version tags may contain the latest version.

Search Query in Maven Central

The following artifacts are stored on Maven Central:

  • The actual SDK JAR file
  • Javadocs for the SDK
  • Sources for the SDK
  • Assembly that has the artifact library, as well as the dependent libraries, javadocs, and sources

If you do not use a dependency section, such as Maven or Gradle, then you must download a ZIP assembly which is also uploaded on Maven Central that has our SDK and all the dependencies. See below on how to search in Maven Central. In the example below, the is the assembly.


The downloaded ZIP file has the following structure:

  • SDK Sources JAR
  • SDK Javadocs JAR
  • public-api-sdk/LICENSE.txt for the SDK license
  • public-api-sdk/NOTICE.txt for information about the licensing for dependent libraries
  • public-api-sdk/ has a read me file about usage
  • public-api-sdk/libs directory that has all the dependent libraries
  • public-api-sdk/libs-sources directory that has the sources for all the dependent libraries

Javadocs can be exported in order to generate an HTML version of the Java documentation for the SDK.