Qlik Users API
Manage users, groups, and authentication in Qlik Cloud tenants.
Manage users, groups, and authentication in Qlik Cloud tenants.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/users-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
{
"info": {
"title": "users",
"version": ""
},
"paths": {
"/api/v1/users": {
"get": {
"tags": [
"users"
],
"summary": "List users",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Users"
}
}
},
"description": "Successful query, returns an array of users"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Invalid request parameters for querying users."
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Not authorized."
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"headers": {
"retry-after": {
"schema": {
"type": "integer",
"default": 1
},
"description": "The amount of seconds to wait before retrying the request."
}
},
"description": "Request has been rate limited."
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Internal server error."
}
},
"parameters": [
{
"in": "query",
"name": "fields",
"schema": {
"type": "string"
},
"required": false,
"description": "A comma-delimited string of the requested fields per entity. If the 'links' value is omitted, then the entity HATEOAS link will also be omitted."
},
{
"in": "query",
"name": "filter",
"schema": {
"type": "string"
},
"required": false,
"description": "The advanced filtering to use for the query. Refer to [RFC 7644](https://datatracker.ietf.org/doc/rfc7644/) for the syntax. Cannot be combined with any of the fields marked as deprecated. All conditional statements within this query parameter are case insensitive.\n\nThe following fields support the `eq` operator: `id`, `subject`, `name`, `email`, `status`, `clientId`, `assignedRoles.id`, `assignedRoles.name`, `assignedGroups.id`, `assignedGroupsAssignedRoles.name`, `assignedScopes`\n\nAdditionally, the following fields support the `co` operator: `name`, `email`, `subject`\n\nQueries may be rate limited if they differ greatly from these examples:\n\n```\n(id eq \"62716ab404a7bd8626af9bd6\" or id eq \"62716ac4c7e500e13ff5fa22\") and (status eq \"active\" or status eq \"disabled\")\n```\n\n```\nname co \"query\" or email co \"query\" or subject co \"query\" or id eq \"query\" or assignedRoles.name eq \"query\"\n```\n\nAny filters for status must be grouped together and applied to the whole query.\n\nValid:\n\n```\n(name eq \"Bob\" or name eq \"Alice\") and (status eq \"active\" or status eq \"disabled\")\n```\n\nInvalid:\n\n```\nname eq \"Bob\" or name eq \"Alice\" and (status eq \"active\" or status eq \"disabled\")\n```\n"
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "number",
"default": 20,
"maximum": 100,
"minimum": 1
},
"required": false,
"description": "The number of user entries to retrieve."
},
{
"in": "query",
"name": "next",
"schema": {
"type": "string"
},
"required": false,
"description": "Get users that come after this cursor value when sorted. Cannot be used in conjunction with `prev`."
},
{
"in": "query",
"name": "prev",
"schema": {
"type": "string"
},
"required": false,
"description": "Get users that come before this cursor value when sorted. Cannot be used in conjunction with `next`."
},
{
"in": "query",
"name": "sort",
"schema": {
"enum": [
"name",
"+name",
"-name",
"_id",
"+_id",
"-_id",
"id",
"+id",
"-id",
"tenantId",
"+tenantId",
"-tenantId",
"clientId",
"+clientId",
"-clientId",
"status",
"+status",
"-status",
"subject",
"+subject",
"-subject",
"email",
"+email",
"-email",
"inviteExpiry",
"+inviteExpiry",
"-inviteExpiry",
"createdAt",
"+createdAt",
"-createdAt"
],
"type": "string",
"default": "+name"
},
"required": false,
"description": "The field to sort by, with +/- prefix indicating sort order"
},
{
"in": "query",
"name": "totalResults",
"schema": {
"type": "boolean"
},
"required": false,
"description": "Whether to return a total match count in the result. Defaults to false. It will trigger an extra DB query to count, reducing the efficiency of the endpoint."
}
],
"description": "Returns a list of users using cursor-based pagination.",
"operationId": "getUsers",
"x-qlik-visibility": "public",
"x-qlik-stability": "stable",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "1",
"limit": 1000
}
},
"post": {
"tags": [
"users"
],
"summary": "Create user",
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/User"
},
"examples": {
"User": {
"$ref": "#/components/examples/PostUser201Response"
}
}
}
},
"description": "User created successfully."
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Invalid request was made."
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Unauthorized to create a user."
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Forbidden from creating a user."
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "User conflict when attempting to create a new user."
},
"413": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Payload was too large (limit of 500kB)"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"headers": {
"retry-after": {
"schema": {
"type": "integer",
"default": 1
},
"description": "The amount of seconds to wait before retrying the request."
}
},
"description": "Request has been rate limited."
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Internal server error."
}
},
"description": "Creates an invited user.",
"operationId": "createUser",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserPostSchema"
}
}
},
"required": true
},
"x-qlik-visibility": "public",
"x-qlik-stability": "stable",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "2",
"limit": 100
}
}
},
"/api/v1/users/{userId}": {
"get": {
"tags": [
"users"
],
"summary": "Get user by ID",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/User"
},
{
"type": "object",
"properties": {}
}
]
}
}
},
"description": "User resource"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Forbidden from getting a user."
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "User was not found."
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"headers": {
"retry-after": {
"schema": {
"type": "integer",
"default": 1
},
"description": "The amount of seconds to wait before retrying the request."
}
},
"description": "Request has been rate limited."
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Internal server error."
}
},
"parameters": [
{
"in": "path",
"name": "userId",
"schema": {
"type": "string",
"format": "uid"
},
"required": true,
"description": "The user's unique identifier"
},
{
"in": "query",
"name": "fields",
"schema": {
"type": "string"
},
"required": false,
"description": "A comma-delimited string of the requested fields per entity. If the 'links' value is omitted, then the entity HATEOAS link will also be omitted."
}
],
"description": "Returns the requested user.",
"operationId": "getUserById",
"x-qlik-visibility": "public",
"x-qlik-stability": "stable",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "1",
"limit": 1000
}
},
"patch": {
"tags": [
"users"
],
"summary": "Update user by ID",
"responses": {
"204": {
"content": {
"application/json": {}
},
"description": "User updated successfully."
},
"207": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "User update was partially successful with non-critical failures."
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Invalid request for patching a user."
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Forbidden from patching a user."
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "User was not found."
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"headers": {
"retry-after": {
"schema": {
"type": "integer",
"default": 1
},
"description": "The amount of seconds to wait before retrying the request."
}
},
"description": "Request has been rate limited."
}
},
"parameters": [
{
"in": "path",
"name": "userId",
"schema": {
"type": "string",
"format": "uid"
},
"required": true,
"description": "The ID of the user to update."
}
],
"description": "Updates fields for a user resource",
"operationId": "updateUserById",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JSONPatchArray"
}
}
},
"required": true
},
"x-qlik-visibility": "public",
"x-qlik-stability": "stable",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "2",
"limit": 100
}
},
"delete": {
"tags": [
"users"
],
"summary": "Delete user by ID",
"responses": {
"204": {
"content": {
"application/json": {}
},
"description": "User deleted successfully."
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Invalid request for deleting a user."
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Forbidden from deleting a user."
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "User was not found."
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"headers": {
"retry-after": {
"schema": {
"type": "integer",
"default": 1
},
"description": "The amount of seconds to wait before retrying the request."
}
},
"description": "Request has been rate limited."
}
},
"parameters": [
{
"in": "path",
"name": "userId",
"schema": {
"type": "string",
"format": "uid"
},
"required": true,
"description": "The ID of the user to delete."
}
],
"description": "Deletes the requested user.",
"operationId": "deleteUserById",
"x-qlik-visibility": "public",
"x-qlik-stability": "stable",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "2",
"limit": 100
}
}
},
"/api/v1/users/actions/count": {
"get": {
"tags": [
"users"
],
"summary": "Count users",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserCount"
}
}
},
"description": "The count of users."
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Forbidden from reading the count."
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Not found."
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"headers": {
"retry-after": {
"schema": {
"type": "integer",
"default": 1
},
"description": "The amount of seconds to wait before retrying the request."
}
},
"description": "Request has been rate limited."
}
},
"parameters": [],
"description": "Returns the number of users in a given tenant",
"operationId": "countUsers",
"x-qlik-visibility": "public",
"x-qlik-stability": "stable",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "1",
"limit": 1000
}
}
},
"/api/v1/users/actions/filter": {
"post": {
"tags": [
"users"
],
"summary": "Filter users",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Users"
}
}
},
"description": "Users retrieved."
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Advanced query filter syntax error or query params format error or filter too complex."
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Unauthorized, JWT invalid or not provided."
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "The operation failed due to unsufficient permissions."
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"headers": {
"retry-after": {
"schema": {
"type": "integer",
"default": 1
},
"description": "The amount of seconds to wait before retrying the request."
}
},
"description": "Request has been rate limited."
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"description": "Internal server error."
}
},
"parameters": [
{
"in": "query",
"name": "fields",
"schema": {
"type": "string"
},
"required": false,
"description": "A comma-delimited string of the requested fields per entity. If the 'links' value is omitted, then the entity HATEOAS link will also be omitted."
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "number",
"default": 20,
"maximum": 100,
"minimum": 1
},
"required": false,
"description": "The number of user entries to retrieve."
},
{
"in": "query",
"name": "next",
"schema": {
"type": "string"
},
"required": false,
"description": "Get users with IDs that are higher than the target user ID. Cannot be used in conjunction with prev."
},
{
"in": "query",
"name": "prev",
"schema": {
"type": "string"
},
"required": false,
"description": "Get users with IDs that are lower than the target user ID. Cannot be used in conjunction with next."
},
{
"in": "query",
"name": "sort",
"schema": {
"enum": [
"name",
"+name",
"-name"
],
"type": "string",
"default": "+name"
},
"required": false,
"description": "The field to sort by, with +/- prefix indicating sort order"
}
],
"description": "Retrieves a list of users matching the filter using an advanced query string.",
"operationId": "users_api_actions_filter",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Filter"
}
}
},
"required": false,
"description": "Will contain the query filter to apply. It shall not contain more than 100 ids."
},
"x-qlik-visibility": "public",
"x-qlik-stability": "stable",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "special",
"limit": 200
}
}
},
"/api/v1/users/actions/invite": {
"post": {
"tags": [
"invite"
],
"summary": "Invite one or more users by email address.",
"responses": {
"207": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InviteDataResponse"
}
}
},
"description": "Request completed successfully. See Results for ResultDetail on each invite."
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorsResponse"
}
}
},
"description": "Request denied."
},
"default": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorsResponse"
}
}
},
"description": "Request error. See Errors."
}
},
"operationId": "inviteUsers",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InviteRequest"
},
"example": {
"invitees": [
{
"name": "Elvis Presley",
"email": "foo@qlik.com",
"resend": true,
"language": "en"
}
]
}
}
},
"required": true
},
"x-qlik-stability": "stable",
"x-qlik-visibility": "public",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "2",
"limit": 100
}
}
},
"/api/v1/users/me": {
"get": {
"tags": [
"users"
],
"summary": "Get my user",
"responses": {
"301": {
"content": {
"text/html": {
"schema": {
"type": "string"
}
}
},
"headers": {
"Location": {
"schema": {
"type": "string",
"format": "url"
},
"description": "The URI to the user resource."
}
},
"description": "Successful redirect."
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
},
"headers": {
"retry-after": {
"schema": {
"type": "integer",
"default": 1
},
"description": "The amount of seconds to wait before retrying the request."
}
},
"description": "Request has been rate limited."
}
},
"description": "Redirects to retrieve the user resource associated with the JWT claims.",
"x-qlik-visibility": "public",
"x-qlik-stability": "stable",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "1",
"limit": 1000
}
}
}
},
"openapi": "3.0.0",
"components": {
"examples": {
"PostUser201Response": {
"value": {
"id": "62b6024fcdf339bb986fae75",
"name": "John Smith",
"email": "john.smith@corp.example",
"status": "invited",
"picture": "https://corp.example/docs/jsmith.png",
"subject": "1234asdasa6789",
"tenantId": "q3VRZ4YMixRaLKEPhkZWM-XMIDN7cO8f",
"createdAt": "2022-06-24T18:28:31.301Z",
"inviteExpiry": 1656700111,
"assignedRoles": [
{
"id": "60804cf8a77b649c66733f65",
"name": "My Custom Role",
"type": "custom",
"level": "user"
}
],
"lastUpdatedAt": "2022-06-24T18:28:31.301Z"
}
}
},
"schemas": {
"AssignedGroups": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"format": "uid",
"example": "507f191e810c19729de860eb",
"description": "The unique group identitier"
},
"name": {
"type": "string",
"example": "Finance",
"readOnly": true,
"description": "The group name"
},
"providerType": {
"enum": [
"idp",
"custom"
],
"type": "string",
"example": "idp",
"description": "The provider type of the group"
},
"assignedRoles": {
"$ref": "#/components/schemas/AssignedRoles"
}
},
"description": "represents a group entity stored in the database"
},
"description": "An array of group references."
},
"AssignedGroupsRefNames": {
"type": "array",
"items": {
"required": [
"name",
"providerType"
],
"properties": {
"name": {
"type": "string",
"example": "My Custom Group",
"description": "The name of the group"
},
"providerType": {
"enum": [
"idp",
"custom"
],
"type": "string",
"example": "idp",
"description": "The type of provider for the group."
}
}
},
"example": [
{
"name": "My Custom Group",
"providerType": "custom"
}
],
"description": "An array of group reference names and provider type."
},
"AssignedRoles": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"type",
"level"
],
"properties": {
"id": {
"type": "string",
"format": "uid",
"example": "507f191e810c19729de860ea",
"description": "The unique role identitier"
},
"name": {
"type": "string",
"example": "My Custom Role",
"readOnly": true,
"description": "The role name",
"x-qlik-filterable": true
},
"type": {
"enum": [
"default",
"custom"
],
"type": "string",
"example": "custom",
"readOnly": true,
"description": "The type of role"
},
"level": {
"enum": [
"admin",
"user"
],
"type": "string",
"example": "user",
"readOnly": true,
"description": "The role level"
}
},
"description": "represents a role entity stored in the database"
},
"description": "An array of role references. Visibility dependant on access level. Must have access to roles to view other users' assigned roles."
},
"Assi
# --- truncated at 32 KB (51 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/qliksense/refs/heads/main/openapi/qliksense-users.json