> For AI agents: the complete documentation index is available at [llms.txt](https://docs.snaptrade.com/llms.txt), and the full documentation text is available at [llms-full.txt](https://docs.snaptrade.com/llms-full.txt). Markdown versions of documentation pages are available by appending .md to the URL path.

# Get the user's AUM percentile

GET https://api.snaptrade.com/aumPercentile

Returns where the user's total assets sit within the distribution of a cohort of comparable users, as a coarse bucket plus an integer percentile.

The cohort is scoped to your own book: a user is only ever compared against your other users, never across SnapTrade customers. (Users on personal-use keys are the exception — they are compared against all other personal-use users, since a personal key has a single user and cannot form a distribution of its own.) The distribution is recomputed monthly, and `as_of` reports which month's distribution the placement came from.

`data` is `null` — a 200, not an error — when SnapTrade declines to place the user. That happens when the cohort is too small to publish a distribution, or when the user's own holdings are incomplete or stale (for example they hold a disabled connection). A placement computed from a partial view of a user's assets would understate them, so none is returned.


Reference: https://docs.snaptrade.com/reference/Account%20Information/AccountInformation_getUserAumPercentile

## Code Examples

### TypeScript

```typescript

import {
  Snaptrade,
  SnaptradeAuth,
} from "snaptrade-typescript-sdk";

const snaptrade = new Snaptrade({
  auth: SnaptradeAuth.commercialApiKey({
    consumerKey: "CONSUMER_KEY",
    clientId: "CLIENT_ID",
  }),
});

const response =
  await snaptrade.accountInformation.getUserAumPercentile(
    {
      userId: "USER_ID",
      userSecret: "USER_SECRET",
    },
  );
console.log(response.data);

```

### Python

```python

from pprint import pprint
from snaptrade_client import SnapTrade, SnapTradeAuth

snaptrade = SnapTrade(
    auth=SnapTradeAuth.commercial_api_key(
        consumer_key="CONSUMER_KEY",
        client_id="CLIENT_ID",
    )
)

response = snaptrade.account_information.get_user_aum_percentile(
    user_id="USER_ID",
    user_secret="USER_SECRET"
)
pprint(response.body)

```

## OpenAPI Specification

```yaml

openapi: 3.0.0
info:
  description: Connect brokerage accounts to your app for live positions and trading
  version: 1.0.0
  title: SnapTrade
  termsOfService: N/A
  contact:
    email: api@snaptrade.com
  x-konfig-ignore:
    potential-incorrect-type: true
  x-readme:
    explorer-enabled: false
paths:
  /aumPercentile:
    get:
      tags:
        - Account Information
      summary: Get the user's AUM percentile
      operationId: AccountInformation_getUserAumPercentile
      description: >
        Returns where the user's total assets sit within the distribution of a
        cohort of comparable users, as a coarse bucket plus an integer
        percentile.


        The cohort is scoped to your own book: a user is only ever compared
        against your other users, never across SnapTrade customers. (Users on
        personal-use keys are the exception — they are compared against all
        other personal-use users, since a personal key has a single user and
        cannot form a distribution of its own.) The distribution is recomputed
        monthly, and `as_of` reports which month's distribution the placement
        came from.


        `data` is `null` — a 200, not an error — when SnapTrade declines to
        place the user. That happens when the cohort is too small to publish a
        distribution, or when the user's own holdings are incomplete or stale
        (for example they hold a disabled connection). A placement computed from
        a partial view of a user's assets would understate them, so none is
        returned.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                description: >-
                  The user's placement within your book, or null when SnapTrade
                  declines to place them
                type: object
                properties:
                  data:
                    nullable: true
                    allOf:
                      - description: >-
                          A user's AUM placement within a single SnapTrade
                          customer's book
                        type: object
                        properties:
                          bucket:
                            type: string
                            enum:
                              - TOP_1_PERCENT
                              - TOP_5_PERCENT
                              - TOP_10_PERCENT
                              - TOP_25_PERCENT
                              - TOP_50_PERCENT
                              - BOTTOM_50_PERCENT
                            description: >
                              The band the user falls into. Deliberately coarse:
                              the underlying totals are only as current as each
                              brokerage's last sync, so an exact percentile
                              would imply more precision than the data supports.
                            example: TOP_25_PERCENT
                          percentile:
                            type: integer
                            minimum: 0
                            maximum: 100
                            description: >
                              The percent of the cohort the user's assets are
                              strictly above, 0-100. Integer by design: the
                              distribution is stored as 101 interpolated
                              cutoffs, so a fractional percentile would not mean
                              anything.


                              Prefer `bucket` for anything you display
                              prominently. The distribution is recomputed
                              monthly, so a user's percentile can move a few
                              points on its own as other users' holdings
                              refresh, while their bucket stays put. Users tied
                              on the same total all receive the lowest
                              percentile that total spans.
                            example: 78
                          cohort_size:
                            type: integer
                            description: >-
                              Number of your users the distribution was computed
                              from.
                            example: 24193
                          as_of:
                            type: string
                            format: date
                            description: >-
                              The month whose distribution produced this
                              placement.
                            example: '2026-08-01T00:00:00.000Z'
                          currency:
                            type: string
                            description: The currency the distribution was computed in.
                            example: USD
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Example for failed request response
                type: object
                properties:
                  detail:
                    example: >-
                      Feature is not enabled for this customer or this
                      connection
                  default_code:
                    example: 1141
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                description: Example for a response that failed for unexpected reasons
                type: object
                properties:
                  detail:
                    example: Encountered an unexpected exception.
                  status_code:
                    example: 500
                  code:
                    example: 1000
      security:
        - PartnerSignature: []
          PartnerClientId: []
          PartnerTimestamp: []
          userId: []
          userSecret: []
        - PersonalSignature: []
          PersonalClientId: []
          PersonalTimestamp: []

```