---
title: "Get user account groups"
method: GET
path: "/users/{user_id}/account_groups"
tags: ["Account Groups"]
---

# Get user account groups

`GET /users/{user_id}/account_groups`

## Request

- Base URL: `https://sandbox.upvest.co`
- URL: `https://sandbox.upvest.co/users/{user_id}/account_groups`
- Auth: OAuth 2 (client credentials, token URL `https://sandbox.upvest.co/auth/token`, scopes: `accounts:read`, `accounts:admin`)

Lists the account groups of a user specified by ID.

## Query parameters

- `sort` 'created_at' | 'updated_at'
- `order` 'ASC' | 'DESC'
- `offset` integer
- `limit` integer

## Response `200`

OK

- object: Paginated list of user account groups. Contains a `data` array of user account group objects and a `meta` object with offset/limit pagination metadata.
  - `meta` object, required: Offset/limit pagination metadata for a list response. Contains the `offset` and `limit` applied to the request, the `count` of resources returned in this page, and the `total_count` of matching resources.
    - `offset` integer, required: Amount of resource to offset in the response.
    - `limit` integer, required: Total limit of the response.
    - `count` integer, required: Count of the resources returned in the response.
    - `total_count` integer, required: Total count of all the resources.
    - `sort` string: The field that the list is sorted by.
    - `order` 'ASC' | 'DESC': The ordering applied to the list. * ASC — Ascending order. * DESC — Descending order.
  - `data` object[], required: List of the user's account groups.
    - `id` string, uuid, required: Universally Unique Identifier (UUID) of the account group.
    - `created_at` string, date-time, required: Date and time when the resource was created. [RFC 3339-5](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), [ISO8601 UTC](https://www.iso.org/iso-8601-date-and-time-format.html)
    - `updated_at` string, date-time, required: Date and time when the resource was last updated. [RFC 3339-5](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), [ISO8601 UTC](https://www.iso.org/iso-8601-date-and-time-format.html)
    - `users` object[], required: The users associated with the account group, each with their relation type.
      - `id` string, uuid: Unique identifier of the user, as a UUID.
      - `type` 'OWNER' | 'CHILD' | 'GUARDIAN': Relation of the user to the account group. * `OWNER` — The user owns the account group. A `JOINT` account group has exactly 2 `OWNER` users. * `CHILD` — The user is the child in a child account group. * `GUARDIAN` — The user is a guardian of a child account group.
    - `status` 'PENDING_APPROVAL' | 'ACTIVE' | 'CLOSING' | 'CLOSED' | 'LOCKED', required: Status of the account group. * `PENDING_APPROVAL` — Account group approval is pending — the account group is visible through our API but cannot be acted on. * `ACTIVE` — Account group is active — full functionality of the Investment API is accessible. * `CLOSING` — Account group is closing. * `CLOSED` — Account group is closed. * `LOCKED` — Account group is locked for all actions.
    - `type` 'PERSONAL' | 'LEGAL_ENTITY' | 'FRENCH_PEA' | 'ISA' | 'CHILD' | 'JOINT', required: Account group type. * PERSONAL - Account group of a person holding assets on their own behalf. * LEGAL_ENTITY - Account group of a legal entity holding assets on behalf of their users. * FRENCH_PEA - Account group of a french resident holding assets in Plan d'Epargne en Actions. * ISA - Account group of a UK resident holding assets in an individual savings account. * CHILD - Account group of a child user holding assets in a child account. * JOINT - Account group legally and beneficially owned by exactly 2 users. The user the account group is created with becomes the first owner and receives an OWNER role. The second owner is added by creating an OWNER role for them (POST /roles); no further owners can be added. The account group activates only once both OWNER roles are active.
    - `securities_account_number` string, ^\d{7,12}$, required: Official securities account number, assigned at account group level. A string of 7 to 12 digits.

## Other responses

- `400`: Bad Request. The incoming request had a malformed parameter/object.
- `401`: Unauthorized. The caller has not been authenticated.
- `403`: Forbidden. The caller has been authenticated but is not allowed to take the requested action.
- `404`: Not Found. The requested resource could not be found.
- `406`: Not Acceptable. The resource does not have a current representation that would be acceptable to the user agent. "Accept" header defined unsupported value.
- `429`: Too Many Requests. The caller has exceeded their quota for the time period and has been throttled.
- `500`: Internal Server Error. The service encountered an unexpected error.
- `503`: Service Unavailable. The service handling for this request cannot be reached at this time.
- `504`: Gateway Timeout. The service gateway has reached its internal timeout.

## Changes

- **2026-09-16** `85aff1852bf8`: 1 warning
  - added the new `JOINT` enum value to the `data/items/type` response property for the response status `200`

[Operation history](https://skmtc.dev/upvest/apis/upvest-investment-api/changes/users/:user_id/account_groups/get.md)

---

[API](https://skmtc.dev/upvest/apis/upvest-investment-api.md) · [All operations](https://skmtc.dev/upvest/apis/upvest-investment-api/llms.txt) · [OpenAPI document](https://skmtc.dev/upvest/apis/upvest-investment-api/revisions/ca69534b631d?raw)
