---
title: "List team members with cursor-based pagination"
method: GET
path: "/teams/{key}/members"
tags: ["Team Members"]
---

# List team members with cursor-based pagination

`GET /teams/{key}/members`

Returns active team members for a specific team with cursor pagination. Team key can be ID or slug. For pending invitations, use the team invites endpoint instead.

## Path parameters

- `key` string, required — Team identifier (ID or slug)

## Query parameters

- `query` string — Search query to filter members by name or email. Case-insensitive partial match
- `limit` integer — Maximum number of team members to return per request (1-100, default: 20)
- `cursor` string — Pagination cursor from previous response. Used to fetch next page of results

## Response `200`

OK

- object
  - `members` object[], required — Array of members for the current result set
    - `id` string, required — Unique identifier for the team member
    - `createdAt` string, date-time, required — Timestamp in ISO 8601 format when the member was created
    - `updatedAt` string, date-time, required — Timestamp in ISO 8601 format when the member was last updated
    - `teamId` string, required — Team this member belongs to
    - `userId` string, required — User ID of the team member
    - `user` object, required — Denormalized user details for quick access without additional queries.
      - `id` string, required — Unique identifier of the user
      - `email` string, email, required — Email address of the user
      - `firstName` string, required — First name of the user
      - `lastName` string, required — Last name of the user
      - `imageUrl` string — Profile image URL of the user
    - `permissions` string[] — Base permissions across the team. Can be overridden per promoter or venue. Undefined means no base permissions (permissions come from PermissionScope only).
    - `roleIds` string[] — Role IDs assigned to this team member. Effective permissions are derived from role nodes plus explicit permission nodes.
    - `isOwner` boolean, required — Whether this member is the owner of the team. Only one owner per team is allowed. Owner has full control and cannot be deleted.
    - `access` object — Promoter access summary. Omitted only for legacy/no-access records.
      - `promoterIds` string[], nullable, required — Null means team-wide promoter access. An array means access is restricted to those promoters.
    - `tenantId` string, required — Tenant ID for multi-tenant isolation
  - `before` string, nullable — Cursor for navigating backward in the result set. Omitted when there are no prior results.
  - `after` string, nullable — Cursor for navigating forward in the result set. Omitted when there are no subsequent results.
  - `limit` number, required — Maximum number of items to return in each result set

## Other responses

- `400` — 400
- `401` — 401
- `403` — 403
- `404` — 404
- `409` — 409
- `412` — 412
- `422` — 422
- `429` — 429
- `500` — 500
- `501` — 501
- `503` — 503

---

[API](https://skmtc.net/session/apis/session-services-api.md) · [All operations](https://skmtc.net/session/apis/session-services-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/session/session-services-api/versions/bec3de84da9e/schema)
