Report templates
The Report Templates API allows you to create, update, and manage templates that define the structure and styling for generated reports, enabling consistent report delivery across your organization.
Endpoints
Facts
| Rate limit | Tier 1 (1000 requests per minute) |
Query Parameters
- limit integer
If present, restrict the number of returned items to this value.
- name string
Template name to search and filter for. Case-insensitive open search with wildcards both as prefix and suffix.
- ownerId string
Return the templates for the specified owner.
- skip integer
If present, skip this number of the returned values in the result set (facilitates paging).
- sort array of strings
Field to sort by. Prefix with +/- to indicate ascending/descending. By default, the sort order is ascending.
Values may be any of: "name""+name""-name""createdAt""+createdAt""-createdAt""updatedAt""+updatedAt""-updatedAt""type""+type""-type"
- sourceAppId string
Return the templates that are using the specified app as data source.
Responses
200
The templates list was retrieved.
- application/json object
application/json properties
- data array of objects
The current page data.
data properties
- id string
The template ID
- name string
Template name
- type string
Template type
Can be one of: "excel""pixelPerfect""html""powerPoint""word"
- ownerId string
The user that this template is scoped to.
- createdAt string
The date and time when the template was created.
- createdBy string
The id of the user who created the template.
- updatedAt string
The date and time when the template was last updated.
- updatedBy string
The id of the user who last updated the template.
- description string
Template description
- sourceAppId string
The id of the app that this template is using as data source.
- sourceAppName string
The name of the app that this template is using as data source.
- metadataVersion integer
The template metadata version
-
- links object
links properties
- next object
next properties
- href string
The URL for the pagination link.
-
- prev object
prev properties
- href string
The URL for the pagination link.
-
- self object
self properties
- href string
The URL for the pagination link.
-
-
-
400
Bad Request
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
import { createQlikApi } from '@qlik/api'
const qlik = createQlikApi({ hostConfig: { host: 'https://{tenant}.{region}.qlikcloud.com', apiKey: '<access-token>', },})
await qlik.reportTemplates.getReportTemplates({})qlik report-template lscurl "https://{tenant}.{region}.qlikcloud.com/api/v1/report-templates" \-H "Authorization: Bearer <access_token>"Example Response
{ "data": [ { "id": "c35f4b70-3ce4-4a30-b62b-2aef16943bc4", "name": "Sales by category", "type": "excel", "ownerId": "0rTsxGg_rtsZAs19Zib_421n6haydjIh", "createdAt": "2026-01-01T12:00:00.000Z", "createdBy": "0rTsxGg_rtsZAs19Zib_421n6htydjIh", "updatedAt": "2026-01-01T12:00:00.000Z", "updatedBy": "0rTsxGg_rtsZAs19Zib_421n6htydjIh", "description": "Sales grouped by product category", "sourceAppId": "c4c70012-29c7-47c2-820d-4ff74cb164a9", "sourceAppName": "Qlik app", "metadataVersion": 1 } ], "links": { "next": { "href": "string" }, "prev": { "href": "string" }, "self": { "href": "string" } }}Facts
| Rate limit | Tier 2 (100 requests per minute) |
Request Body
The upload request.
- application/json object
application/json properties
- name stringRequired
Template name
- description string
Template description
- sourceAppId string
The ID of the app that this template is using as data source. The id stored in the template file metadata is used if no value is specified.
- sourceAppAction string
Specifies the action to perform with the given source app id. Use "validate" to verify that the template source app matches the provided value. Use "replace" to migrate the template to a different app by replacing the source app id.
Can be one of: "validate""replace"
- temporaryContentId stringRequired
The ID of a previously uploaded temporary content file
-
Responses
201
New template was created.
- application/json object
application/json properties
- id string
The template ID
- name string
Template name
- type string
Template type
Can be one of: "excel""pixelPerfect""html""powerPoint""word"
- ownerId string
The user that this template is scoped to.
- createdAt string
The date and time when the template was created.
- createdBy string
The id of the user who created the template.
- updatedAt string
The date and time when the template was last updated.
- updatedBy string
The id of the user who last updated the template.
- description string
Template description
- sourceAppId string
The id of the app that this template is using as data source.
- sourceAppName string
The name of the app that this template is using as data source.
- metadataVersion integer
The template metadata version
-
400
Bad Request
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
403
Forbidden
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
404
Not Found
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
413
The template file exceeds the user's quota for maximum file to upload.
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
import { createQlikApi } from '@qlik/api'
const qlik = createQlikApi({ hostConfig: { host: 'https://{tenant}.{region}.qlikcloud.com', apiKey: '<access-token>', },})
await qlik.reportTemplates.createReportTemplate({ description: 'Sales grouped by product category', name: 'Sales by category', sourceAppAction: 'validate', sourceAppId: '78fb8e8d-bc83-4da1-b0d1-b0dc0a5c3e5b', temporaryContentId: '69b14f2bb93332c3ff8c64b8',})qlik report-template create \ --name 'Sales by category' \ --temporaryContentId '69b14f2bb93332c3ff8c64b8'curl "https://{tenant}.{region}.qlikcloud.com/api/v1/report-templates" \-X POST \-H "Content-type: application/json" \-H "Authorization: Bearer <access_token>" \-d '{"name":"Sales by category","description":"Sales grouped by product category","sourceAppId":"78fb8e8d-bc83-4da1-b0d1-b0dc0a5c3e5b","sourceAppAction":"validate","temporaryContentId":"69b14f2bb93332c3ff8c64b8"}'Example Response
{ "id": "c35f4b70-3ce4-4a30-b62b-2aef16943bc4", "name": "Sales by category", "type": "excel", "ownerId": "0rTsxGg_rtsZAs19Zib_421n6haydjIh", "createdAt": "2026-01-01T12:00:00.000Z", "createdBy": "0rTsxGg_rtsZAs19Zib_421n6htydjIh", "updatedAt": "2026-01-01T12:00:00.000Z", "updatedBy": "0rTsxGg_rtsZAs19Zib_421n6htydjIh", "description": "Sales grouped by product category", "sourceAppId": "c4c70012-29c7-47c2-820d-4ff74cb164a9", "sourceAppName": "Qlik app", "metadataVersion": 1}Facts
| Rate limit | Tier 1 (1000 requests per minute) |
Path Parameters
- id stringRequired
The ID of the report template.
Responses
200
The template was located.
- application/json object
application/json properties
- id string
The template ID
- name string
Template name
- type string
Template type
Can be one of: "excel""pixelPerfect""html""powerPoint""word"
- ownerId string
The user that this template is scoped to.
- createdAt string
The date and time when the template was created.
- createdBy string
The id of the user who created the template.
- updatedAt string
The date and time when the template was last updated.
- updatedBy string
The id of the user who last updated the template.
- description string
Template description
- sourceAppId string
The id of the app that this template is using as data source.
- sourceAppName string
The name of the app that this template is using as data source.
- metadataVersion integer
The template metadata version
-
400
Bad Request
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
403
Forbidden
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
404
A template with the specified ID was not found.
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
import { createQlikApi } from '@qlik/api'
const qlik = createQlikApi({ hostConfig: { host: 'https://{tenant}.{region}.qlikcloud.com', apiKey: '<access-token>', },})
await qlik.reportTemplates.getReportTemplate( 'c35f4b70-3ce4-4a30-b62b-2aef16943bc4',)qlik report-template get 'c35f4b70-3ce4-4a30-b62b-2aef16943bc4'curl "https://{tenant}.{region}.qlikcloud.com/api/v1/report-templates/{id}" \-H "Authorization: Bearer <access_token>"Example Response
{ "id": "c35f4b70-3ce4-4a30-b62b-2aef16943bc4", "name": "Sales by category", "type": "excel", "ownerId": "0rTsxGg_rtsZAs19Zib_421n6haydjIh", "createdAt": "2026-01-01T12:00:00.000Z", "createdBy": "0rTsxGg_rtsZAs19Zib_421n6htydjIh", "updatedAt": "2026-01-01T12:00:00.000Z", "updatedBy": "0rTsxGg_rtsZAs19Zib_421n6htydjIh", "description": "Sales grouped by product category", "sourceAppId": "c4c70012-29c7-47c2-820d-4ff74cb164a9", "sourceAppName": "Qlik app", "metadataVersion": 1}Facts
| Rate limit | Tier 2 (100 requests per minute) |
Path Parameters
- id stringRequired
The ID of the report template to patch.
Request Body
A JSON patch request as defined by RFC 6902.
- application/json array of objects
application/json properties
- op string
- from string
- path string
- value object
-
A JSON patch request as defined by RFC 6902.
- application/json-patch+json array of objects
application/json-patch+json properties
- op string
- from string
- path string
- value object
-
Responses
204
Patch successfully applied to template.
400
Bad Request
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
403
Forbidden
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
404
A template with the specified ID was not found.
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
409
Conflict
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
413
The template file exceeds the user's quota for maximum file to upload.
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
import { createQlikApi } from '@qlik/api'
const qlik = createQlikApi({ hostConfig: { host: 'https://{tenant}.{region}.qlikcloud.com', apiKey: '<access-token>', },})
await qlik.reportTemplates.patchReportTemplate( 'c35f4b70-3ce4-4a30-b62b-2aef16943bc4', [ { from: 'string', op: 'string', path: 'string', value: {}, }, ],)qlik report-template patch 'c35f4b70-3ce4-4a30-b62b-2aef16943bc4'curl "https://{tenant}.{region}.qlikcloud.com/api/v1/report-templates/{id}" \-X PATCH \-H "Content-type: application/json" \-H "Authorization: Bearer <access_token>" \-d '[{"op":"string","from":"string","path":"string","value":{}}]'Facts
| Rate limit | Tier 2 (100 requests per minute) |
Path Parameters
- id stringRequired
The ID of the report template to update.
Request Body
The upload request.
- application/json object
application/json properties
- name stringRequired
Template name
- description string
Template description
- sourceAppAction string
Specifies the action to perform with the new source app. Use "validate" to verify that the source app of the uploaded template matches the target app. Use "replace" to migrate the uploaded template to the target app by replacing the source app id.
Can be one of: "validate""replace"
- temporaryContentId stringRequired
The ID of a previously uploaded temporary content file
-
Responses
201
The template was updated.
- application/json object
application/json properties
- id string
The template ID
- name string
Template name
- type string
Template type
Can be one of: "excel""pixelPerfect""html""powerPoint""word"
- ownerId string
The user that this template is scoped to.
- createdAt string
The date and time when the template was created.
- createdBy string
The id of the user who created the template.
- updatedAt string
The date and time when the template was last updated.
- updatedBy string
The id of the user who last updated the template.
- description string
Template description
- sourceAppId string
The id of the app that this template is using as data source.
- sourceAppName string
The name of the app that this template is using as data source.
- metadataVersion integer
The template metadata version
-
400
Bad Request
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
403
Forbidden
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
404
A template with the specified ID was not found.
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
409
Conflict
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
413
The template file exceeds the user's quota for maximum file to upload.
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
import { createQlikApi } from '@qlik/api'
const qlik = createQlikApi({ hostConfig: { host: 'https://{tenant}.{region}.qlikcloud.com', apiKey: '<access-token>', },})
await qlik.reportTemplates.updateReportTemplate( 'c35f4b70-3ce4-4a30-b62b-2aef16943bc4', { description: 'Sales grouped by product category', name: 'Sales by category', sourceAppAction: 'validate', temporaryContentId: '69b14f2bb93332c3ff8c64b8', },)qlik report-template update 'c35f4b70-3ce4-4a30-b62b-2aef16943bc4' \ --name 'Sales by category' \ --temporaryContentId '69b14f2bb93332c3ff8c64b8'curl "https://{tenant}.{region}.qlikcloud.com/api/v1/report-templates/{id}" \-X PUT \-H "Content-type: application/json" \-H "Authorization: Bearer <access_token>" \-d '{"name":"Sales by category","description":"Sales grouped by product category","sourceAppAction":"validate","temporaryContentId":"69b14f2bb93332c3ff8c64b8"}'Example Response
{ "id": "c35f4b70-3ce4-4a30-b62b-2aef16943bc4", "name": "Sales by category", "type": "excel", "ownerId": "0rTsxGg_rtsZAs19Zib_421n6haydjIh", "createdAt": "2026-01-01T12:00:00.000Z", "createdBy": "0rTsxGg_rtsZAs19Zib_421n6htydjIh", "updatedAt": "2026-01-01T12:00:00.000Z", "updatedBy": "0rTsxGg_rtsZAs19Zib_421n6htydjIh", "description": "Sales grouped by product category", "sourceAppId": "c4c70012-29c7-47c2-820d-4ff74cb164a9", "sourceAppName": "Qlik app", "metadataVersion": 1}Facts
| Rate limit | Tier 2 (100 requests per minute) |
Path Parameters
- id stringRequired
The ID of the report template to delete.
Responses
204
The template was deleted.
400
Bad Request
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
403
Forbidden
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
404
Not Found
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
import { createQlikApi } from '@qlik/api'
const qlik = createQlikApi({ hostConfig: { host: 'https://{tenant}.{region}.qlikcloud.com', apiKey: '<access-token>', },})
await qlik.reportTemplates.deleteReportTemplate( 'c35f4b70-3ce4-4a30-b62b-2aef16943bc4',)qlik report-template rm 'c35f4b70-3ce4-4a30-b62b-2aef16943bc4'curl "https://{tenant}.{region}.qlikcloud.com/api/v1/report-templates/{id}" \-X DELETE \-H "Authorization: Bearer <access_token>"Facts
| Rate limit | Tier 2 (100 requests per minute) |
Path Parameters
- id stringRequired
The ID of the report template.
Responses
200
The template file.
- application/octet-stream string
400
Bad Request
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
403
Forbidden
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
404
Not Found
- application/json object
application/json properties
- errors array of objects
List of errors and their properties.
errors properties
- code string
The error code.
- meta object
Additional error metadata.
- title string
Summary of the problem.
- detail string
A human-readable explanation specific to this occurrence of the problem.
-
- statusCode integer
-
import { createQlikApi } from '@qlik/api'
const qlik = createQlikApi({ hostConfig: { host: 'https://{tenant}.{region}.qlikcloud.com', apiKey: '<access-token>', },})
await qlik.reportTemplates.downloadReportTemplate( 'c35f4b70-3ce4-4a30-b62b-2aef16943bc4',)qlik report-template download 'c35f4b70-3ce4-4a30-b62b-2aef16943bc4'curl "https://{tenant}.{region}.qlikcloud.com/api/v1/report-templates/{id}/actions/download" \-X POST \-H "Authorization: Bearer <access_token>" \-o "output-file"