POST
/v1/mgmt/user/search

Authorization

Descope Project ID and Management Key
AuthorizationBearer <token>

Project ID:Management Key as bearer token.

In: header

Request Body

application/json

loginId?string

Search for specific login ID

tenantIds?array<string>
string

If not empty then users must be members of at least one of these tenants

roleNames?array<string>
string

If not empty then users must have one of the specified roles

limit?integer

Default is 100 if not specified

Formatint32
text?string

Full text search across relevant columns

page?integer

Page number starting with 0 for the first page

Formatint32
ssoOnly?boolean

Bring only users that have SSO external IDs

Defaultfalse
withTestUser?boolean

Return also users which are test users

testUsersOnly?boolean

Return only test users

Defaultfalse
customAttributes?object

Custom attributes as key-value pairs. Keys must be strings; values can be strings, numbers, booleans, or arrays.

Example{ "attribute-key": "attribute-value" }
statuses?array<string>
string

If not empty then users must be in one of those statuses

emails?array<string>
string
phones?array<string>
string
ssoAppIds?array<string>
string
sort?array<SortField>
loginIds?array<string>
string
fromCreatedTime?string
toCreatedTime?string
fromModifiedTime?string
toModifiedTime?string
userIds?array<string>
string
scimOnly?boolean

Bring only users that provisioned or updated by SCIM

tenantRoleIds?object
tenantRoleNames?object
includeSubTenants?boolean
password?boolean
totp?boolean
webauthn?boolean
scim?boolean
selectedColumns?array<string>
string
verifiedEmail?boolean

If provided, filter users by whether their email is verified

verifiedPhone?boolean

If provided, filter users by whether their phone is verified

offset?integer

Direct row offset for pagination (0-based). When set to a positive value, this takes precedence over the page-based offset (page * limit).

Formatint32

Search users, using a valid management key.

curl -X POST "https://api.descope.com/v1/mgmt/user/search" \  -H "Content-Type: application/json" \  -d '{}'
{  "users": [    {      "loginIds": [        "string"      ],      "userId": "string",      "name": "string",      "email": "string",      "phone": "string",      "verifiedEmail": true,      "verifiedPhone": true,      "roleNames": [        "string"      ],      "userTenants": [        {          "tenantId": "string",          "roleNames": [            "string"          ],          "tenantName": "string",          "permissions": [            "string"          ]        }      ],      "status": "string",      "externalIds": [        "string"      ],      "picture": "string",      "test": false,      "customAttributes": {        "attribute-key": "attribute-value"      },      "createdTime": 0,      "TOTP": false,      "SAML": false,      "OAuth": {        "property1": false,        "property2": false      },      "webauthn": true,      "password": true,      "ssoAppIds": [        "string"      ],      "givenName": "string",      "middleName": "string",      "familyName": "string",      "editable": true,      "SCIM": true,      "push": true,      "permissions": [        "string"      ],      "OIDC": true,      "consentExpiration": 0    }  ],  "total": 0}
export interface Response {users?: {loginIds?: string[]userId?: stringname?: stringemail?: stringphone?: stringverifiedEmail?: booleanverifiedPhone?: booleanroleNames?: string[]userTenants?: UserTenants[]status?: stringexternalIds?: string[]picture?: stringtest?: boolean/** * Custom attributes as key-value pairs. Keys must be strings; values can be strings, numbers, booleans, or arrays. */customAttributes?: {[k: string]: string}createdTime?: numberTOTP?: booleanSAML?: booleanOAuth?: {[k: string]: boolean}webauthn?: booleanpassword?: booleanssoAppIds?: string[]givenName?: stringmiddleName?: stringfamilyName?: stringeditable?: booleanSCIM?: booleanpush?: booleanpermissions?: string[]OIDC?: booleanconsentExpiration?: number}[]total?: number}export interface UserTenants {tenantId?: stringroleNames?: string[]tenantName?: stringpermissions?: string[]}
You can then parse through the response in order to find any users which you may need to delete, update, etc.

See also

  • See Manage Users for further details on managing users.

  • See The User Object for further details on the user object. full: true seoTitle: Search Users | API Reference | Descope Documentation noIndex: true _openapi: method: POST toc: [] structuredData: headings: [] contents:

    • content: >-

      Search for users, using a valid management key.

      This API endpoint will search for users utilizing a valid management key. Searches can be defined with any combination of roles or tenants. You can also only send the request with an empty payload to return all users.

      The response will include the following details on all users within an array of objects:

      • loginIds

      • userId

      • name

      • email

      • phone

      • verified settings (phone, email)

      • Tenant configurations (tenantIds, roleNames)

      Next Steps

      You can then parse through the response in order to find any users which you may need to delete, update, etc.

      See also


POST
/v2/mgmt/user/search

Authorization

Descope Project ID and Management Key
AuthorizationBearer <token>

Project ID:Management Key as bearer token.

In: header

Request Body

application/json

loginId?string

Search for specific login ID

tenantIds?array<string>
string

If not empty then users must be members of at least one of these tenants

roleNames?array<string>
string

If not empty then users must have one of the specified roles

limit?integer

Default is 100 if not specified

Formatint32
text?string

Full text search across relevant columns

page?integer

Page number starting with 0 for the first page

Formatint32
ssoOnly?boolean

Bring only users that have SSO external IDs

Defaultfalse
withTestUser?boolean

Return also users which are test users

testUsersOnly?boolean

Return only test users

Defaultfalse
customAttributes?object

Custom attributes as key-value pairs. Keys must be strings; values can be strings, numbers, booleans, or arrays.

Example{ "attribute-key": "attribute-value" }
statuses?array<string>
string

If not empty then users must be in one of those statuses

emails?array<string>
string
phones?array<string>
string
ssoAppIds?array<string>
string
sort?array<SortField>
loginIds?array<string>
string
fromCreatedTime?string
toCreatedTime?string
fromModifiedTime?string
toModifiedTime?string
userIds?array<string>
string
scimOnly?boolean

Bring only users that provisioned or updated by SCIM

tenantRoleIds?object
tenantRoleNames?object
includeSubTenants?boolean
password?boolean
totp?boolean
webauthn?boolean
scim?boolean
selectedColumns?array<string>
string
verifiedEmail?boolean

If provided, filter users by whether their email is verified

verifiedPhone?boolean

If provided, filter users by whether their phone is verified

offset?integer

Direct row offset for pagination (0-based). When set to a positive value, this takes precedence over the page-based offset (page * limit).

Formatint32

Search for users, using a valid management key.

This API endpoint will search for users utilizing a valid management key. Searches can be defined with any combination of roles or tenants. You can also only send the request with an empty payload to return all users.

The response will include the following details on all users within an array of objects:

  • loginIds
  • userId
  • name
  • email
  • phone
  • verified settings (phone, email)
  • Tenant configurations (tenantIds, roleNames)

Next Steps

You can then parse through the response in order to find any users which you may need to delete, update, etc.

See also

curl -X POST "https://api.descope.com/v2/mgmt/user/search" \  -H "Content-Type: application/json" \  -d '{}'
{  "users": [    {      "loginIds": [        "string"      ],      "userId": "string",      "name": "string",      "email": "string",      "phone": "string",      "verifiedEmail": true,      "verifiedPhone": true,      "roleNames": [        "string"      ],      "userTenants": [        {          "tenantId": "string",          "roleNames": [            "string"          ],          "tenantName": "string",          "permissions": [            "string"          ]        }      ],      "status": "string",      "externalIds": [        "string"      ],      "picture": "string",      "test": false,      "customAttributes": {        "attribute-key": "attribute-value"      },      "createdTime": 0,      "TOTP": false,      "SAML": false,      "OAuth": {        "property1": false,        "property2": false      },      "webauthn": true,      "password": true,      "ssoAppIds": [        "string"      ],      "givenName": "string",      "middleName": "string",      "familyName": "string",      "editable": true,      "SCIM": true,      "push": true,      "permissions": [        "string"      ],      "OIDC": true,      "consentExpiration": 0    }  ],  "total": 0}
export interface Response {users?: {loginIds?: string[]userId?: stringname?: stringemail?: stringphone?: stringverifiedEmail?: booleanverifiedPhone?: booleanroleNames?: string[]userTenants?: UserTenants[]status?: stringexternalIds?: string[]picture?: stringtest?: boolean/** * Custom attributes as key-value pairs. Keys must be strings; values can be strings, numbers, booleans, or arrays. */customAttributes?: {[k: string]: string}createdTime?: numberTOTP?: booleanSAML?: booleanOAuth?: {[k: string]: boolean}webauthn?: booleanpassword?: booleanssoAppIds?: string[]givenName?: stringmiddleName?: stringfamilyName?: stringeditable?: booleanSCIM?: booleanpush?: booleanpermissions?: string[]OIDC?: booleanconsentExpiration?: number}[]total?: number}export interface UserTenants {tenantId?: stringroleNames?: string[]tenantName?: stringpermissions?: string[]}
Was this helpful?