<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-M74D8PB" height="0" width="0" style="display:none;visibility:hidden">
Loading
Skip to NavigationSkip to Main Content
Efficiently Retrieve User Lists Using Skinny Users Endpoints
Okta Classic Engine
Okta Identity Engine
Administration
Overview

This article clarifies how to improve performance when retrieving a list of users associated with an application or group. Standard API endpoints return detailed profile and credential information that may cause slower load times if that data is not required for the task.

Applies To
  • API
  • Application User Management
  • Group User Management

 

Solution

To optimize performance and reduce data payload size, use the skinny_users endpoints. These endpoints operate similarly to standard user endpoints but omit specific objects, such as detailed profiles or credentials.

 

Application Skinny Users

When retrieving users for an application, the standard endpoint returns full profile objects:

/api/v1/apps/<id>/users

 

Example of a standard response:

[
    {
        "id": "{{userId}}",
        "externalId": null,
        "created": "2025-09-25T04:06:04.000Z",
        "lastUpdated": "2025-09-25T04:06:04.000Z",
        "scope": "GROUP",
        "status": "ACTIVE",
        "statusChanged": "2025-09-25T04:06:04.000Z",
        "passwordChanged": null,
        "syncState": "DISABLED",
        "credentials": {
            "userName": "john.doe@atko.mail"
        },
        "profile": {
            "street_address": null,
            "country": null,
            "website": null,
            "zoneinfo": "America/Los_Angeles",
            "birthdate": null,
            "gender": null,
            "formatted": null,
            "profile": null,
            "locality": null,
            "given_name": "John",
            "middle_name": null,
            "locale": "en_US",
            "picture": null,
            "name": "John Doe",
            "nickname": null,
            "phone_number": null,
            "region": null,
            "postal_code": null,
            "family_name": "Doe",
            "email": "john.doe@atko.mail"
        },
        "_links": {
            "app": {
                "href": "https://{{oktaTenantURL}}/api/v1/apps/{{appId}}"
            },
            "user": {
                "href": "https://{{oktaTenantURL}}/api/v1/users/{{userId}}"
            },
            "group": {
                "name": "Everyone",
                "href": "https://{{oktaTenantURL}}/api/v1/groups/{{groupId}}"
            }
        }
    }
]

 

Use the following endpoint for a more efficient retrieval that returns an empty profile object:

/api/v1/apps/<id>/skinny_users

 

Example of the optimized response:

[
    {
        "id": "{{userId}}",
        "externalId": null,
        "created": "2025-09-25T04:06:04.000Z",
        "lastUpdated": "2025-09-25T04:06:04.000Z",
        "scope": "",
        "status": "ACTIVE",
        "statusChanged": "2025-09-25T04:06:04.000Z",
        "passwordChanged": null,
        "credentials": {
            "userName": "john.doe@atko.mail"
        },
        "profile": {}
    }
]

Group Skinny Users

For group-based requests, the following endpoint omits credentials and credentials.provider details:

/api/v1/groups/<id>/skinny_users

NOTE: These endpoints utilize their own rate limit buckets, which ensure they do not interfere with standard application or group endpoint limits.

Loading
Efficiently Retrieve User Lists Using Skinny Users Endpoints