Skip to main content Skip to complementary content

Capability APIs

Information note

If you plan on using capability APIs to build custom visualizations, mashups, or extensions, consider using the nebula.js open-source library available on NPM instead.

nebula.js is a collection of JavaScript libraries, visualizations, and CLIs that helps developers build and integrate visualizations on top of Qlik's Associative Engine. For more information, see nebula.js.


The Capability APIs are a collection of JavaScript APIs that allows you to easily embed Qlik Sense content into a web page. With just a few lines of code it is possible to create a visualization that leverages the Qlik Sense visualization library.

Information noteThe term Capability API was introduced with Qlik Sense 2.1. Some of the Capability APIs were available before this version, published under the name Mashup API.


Use these resources to build and bring capabilities into visualization extensions (Puzzle), and mashups (Artifact).

Capability API Namespace Usage - - -
Root API qlik Puzzle   Code Artifact
App API Puzzle Artifact Code Artifact
Bookmark API Puzzle   Code Artifact
Field API Puzzle   Code Artifact
Selection API Puzzle   Code Artifact
Variable API Puzzle   Code Artifact
Visualization API       Artifact
Global API Puzzle   Code Artifact
Navigation API qlik.navigation Puzzle Artifact Code  
Table API qlik.table Puzzle Artifact Code Artifact
Theme API qlik.theme       Artifact


The Capability APIs use AngularJS and RequireJS, which are both global libraries with the potential to interact with the rest of your web app. jQuery is also loaded with the Capability APIs. This means if you use another version of jQuery in your web app, it will potentially be overwritten by the copy of jQuery loaded by the Capability APIs. CSS must also be loaded to use the Capability APIs, which has the potential to overwrite your own web app styles. These factors should be considered before using the Capability APIs. If any of these potential conflicts are an issue, consider using the App Integration API or Single Integration API. Both of these APIs use iFrames to embed Qlik Sense content into your page, effectively isolating your web app from library version conflicts. You could also consider creating a mashup with the Capability APIs and embedding the mashup in your web app in an iFrame to isolate it from the rest of your web app.

See Using AngularJS in your mashup for more information on integrating the Capability APIs into an existing AngularJS project.


The following capability API methods are not supported when used with Qlik Sense SaaS.

Capability API methods
Capability API Methods
Global API
  • getAppList()
  • getProductVersion()
  • getQTProduct()
  • isPersonalMode()
Root API
  • callRepository()
  • getAppList()
  • getExtensionList()
  • getGlobal()
  • sessionApp()
  • sessionAppFromApp()
QVisualization API
  • exportData()
  • exportImg()
  • exportPdf()

Getting started

Learn how to get started embedding Qlik Sense content into a web page.

Information noteThis example assumes you are already authenticated or have allowed anonymous access to your Qlik Sense instance.

Loading resources

To use the Capability APIs, you need to include references to the Qlik Sense implementation of RequireJS and one CSS file to ensure visualizations are styled as expected.


Include the following in the <head> section of your page:

<link rel="stylesheet" href="https://QSE_domain[:port]/<virtual proxy>/resources/autogenerated/qlik-styles.css">


Include the following before the closing </body> tag:

<script type="text/javascript" src="https://QSE_domain[:port]/<virtual proxy>/resources/assets/external/requirejs/require.js"></script>
Information noteThe virtual proxy may be omitted if you are connecting to the default virtual proxy. The virtual proxy is not applicable to Qlik Sense SaaS.
Information noteThe port may be omitted if you are using the default ports for the current protocol (HTTP - 80, HTTPS - 443).

Connecting to the Qlik associative engine instance

You must create a config object to configure the baseUrl for RequireJS so that it knows where to fetch all the resources required:

var config = {
    host: "QSE_domain", //the address of your Qlik Engine Instance
    prefix: "/", //or the virtual proxy to be used. for example "/anonymous/"
    port: 443, //or the port to be used if different from the default port  
    isSecure: true //should be true if connecting over HTTPS

You then use the config object to tell RequireJS where to set the baseUrl:

const baseUrl = ( config.isSecure ? 'https://' : 'http://' ) + + (config.port ? ':' + config.port : '') + config.prefix;
    baseUrl: '${baseUrl}resources'

You can now load the main qlik.js file, which contains all the Capability APIs:

require(['js/qlik'], function(qlik) {
    //if there's any error we catch it here
    qlik.setOnError( function ( error ) {

The qlik object is an instance of the Root API. With your connection to the server, you can now open a Qlik Sense app:

var app = qlik.openApp("app name or id", config);

You can now work with your app, that uses the App API.

Version history

Each method and property contain information around when it was introduced, updated, deprecated or removed. A list of all relevant API changes per version release can be found in API version history.

Capability API version history

Did this page help you?

If you find any issues with this page or its content – a typo, a missing step, or a technical error – let us know how we can improve!