# List team members

```http
GET https://secure.yoprint.com/v1/api/store/{team_slug}/setting/user
```

- API version: v1
- Operation ID: `v1_public_user_index`
- Section: Team settings › [Team members](https://developer.yoprint.com/reference/team-members.md)
- Web page: https://developer.yoprint.com/reference/team-members/v1-user-index/
- Authentication: `Authorization: Bearer YOUR_API_KEY`

Returns everyone on the team: name, email, permission group (`roles`), whether they are the owner, and when they last signed in.

Use the `id` wherever a request asks for a user, for example to assign people to a job, task or sales order. People who were invited but haven't joined yet are in the invitations list instead.

## Permission

Any member of the team, whatever their role. This is wider than the web app, whose Settings pages need Manage Settings: on the API only changes need it.

## Path parameters

- `team_slug` (string, required): Your team slug, shown as Team ID next to your API key in Profile. Example `your-team`.

## Request body

This operation takes no request body.

### Example request

```bash
curl 'https://secure.yoprint.com/v1/api/store/your-team/setting/user' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Accept: application/json' \
  -H 'X-Yoprint-Decimal-Format: exact-v1'
```

## Response

`200` Successful response.

Fields:

- `data` (array of objects, required)
  - Each item:
    - `avatar_url` (string | null, required)
    - `email` (string, required)
    - `id` (string, required)
    - `is_owner` (boolean, required): True for the team owner. There is exactly one.
    - `last_login_at` (string (date-time) | null, required): Null when they never signed in.
    - `name` (string, required)
    - `roles` (array of objects, required): Their permission group on this team.
      - Each item:
        - `id` (string, required)
        - `name` (string, required)
    - `timezone` (string | null, required)
- `status` (integer, required)
- `success` (boolean, required)

Example response:

```json
{
  "data": [
    {
      "avatar_url": null,
      "email": "alex@example.com",
      "id": "E6LjYJJimQNFVF",
      "is_owner": false,
      "last_login_at": "2026-10-30T14:05:00+00:00",
      "name": "Alex Rivera",
      "roles": [
        {
          "id": "drvVENtzY33bqP",
          "name": "Production"
        }
      ],
      "timezone": "America/New_York"
    },
    {
      "avatar_url": null,
      "email": "sam@example.com",
      "id": "NiOR24yWE4ybXe",
      "is_owner": true,
      "last_login_at": "2026-10-30T14:05:00+00:00",
      "name": "Sam Lee",
      "roles": [
        {
          "id": "XPTV59kiGksGRr",
          "name": "Admin"
        }
      ],
      "timezone": "America/New_York"
    }
  ],
  "status": 200,
  "success": true
}
```

## Errors

- `401` The API key is missing or wrong (`unauthenticated`).
- `403` You are not allowed to do this. `api_access_not_in_plan`: your team's plan doesn't include API access (Pro and above, with an active subscription or trial), so every request answers this until the team upgrades. When your role lacks the permission the operation needs, the body is only `{"message": "Insufficient Permission"}`. Other refusals use the error envelope, with `unauthorized` or `user_is_not_authorized`.
- `404` Not found. `page_not_found`: the team slug is unknown, you are not a member of the team, or an id in the path is not one of this team's. `code: null`, with a message that starts "No query results for": there is no record with that id.

## Related

- [List invitations](https://developer.yoprint.com/reference/team-invitations/v1-invite-index.md): `GET /v1/api/store/{team_slug}/setting/invite`
- [Get a team member](https://developer.yoprint.com/reference/team-members/v1-user-show.md): `GET /v1/api/store/{team_slug}/setting/user/{hash_id}`
- [List permission groups](https://developer.yoprint.com/reference/permission-groups/v1-group-index.md): `GET /v1/api/store/{team_slug}/setting/group`
