> This page is for Developer Documentation.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.benchling.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.benchling.com/_mcp/server.

# List GroupMembership items

GET https://{tenant_name}.benchling.com/api/v3/group-membership/items

List GroupMembership items.

Reference: https://docs.benchling.com/docs/api/benchling-api/group-membership/list

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Query parameters

- `createdAt.gt` (string, optional) — Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created after the specified time. e.g. > 2017-04-30.
- `createdAt.gte` (string, optional) — Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created at or after the specified time. e.g. >= 2017-04-30.
- `createdAt.lt` (string, optional) — Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created before the specified time. e.g. \< 2017-04-30.
- `createdAt.lte` (string, optional) — Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created at or before the specified time. e.g. \<= 2017-04-30.
- `groupId.eq` (string, optional) — Restricts results to memberships of the specified group ID.
- `id.anyOf` (string, optional) — Restricts results to those matching any of the specified IDs. Comma-separated list.
- `memberId.eq` (string, optional) — Restricts results to memberships for the specified member (principal) ID.
- `modifiedAt.gt` (string, optional) — Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified after the specified time. e.g. > 2017-04-30.
- `modifiedAt.gte` (string, optional) — Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified at or after the specified time. e.g. >= 2017-04-30.
- `modifiedAt.lt` (string, optional) — Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified before the specified time. e.g. \< 2017-04-30.
- `modifiedAt.lte` (string, optional) — Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified at or before the specified time. e.g. \<= 2017-04-30.
- `nextToken` (string, optional) — Token for pagination
- `omit` (string, optional) — Comma-separated list of top-level fields to omit from each returned item. Cannot overlap with returning.
- `pageSize` (integer, optional) — Number of results to return. Defaults to 50, maximum of 100.
- `returning` (string, optional) — Comma-separated list of top-level fields to include in each returned item. Cannot overlap with omit.
- `sort` (enum, optional, default: modifiedAt:desc) — Method by which to order results. Valid sorts are: createdAt (created time, oldest first) and modifiedAt (modified time, oldest first). Use :asc or :desc to specify ascending or descending order. Default is modifiedAt:desc.
  - Allowed values: `createdAt:asc`, `createdAt:desc`, `modifiedAt:asc`, `modifiedAt:desc`

## Response

### 200

OK

- `items` (list of GroupMembership, optional)
- `nextToken` (string, optional)

## Errors

### 400 Group Membership List Request Bad Request Error

Bad Request

- `detail` (GeneralErrorDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)

### 403 Group Membership List Request Forbidden Error

Forbidden

- `detail` (GeneralErrorDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)

### 404 Group Membership List Request Not Found Error

Not Found

- `detail` (GeneralErrorDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)

### 429 Group Membership List Request Too Many Requests Error

Too Many Requests

- `detail` (TooManyRequestsErrorBodyDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)
- `violated-policies` (list of enum, optional) — The budget policies that rejected the request, in canonical order: `user`, `integration`, then `tenant`.
  - Allowed values: `user`, `integration`, `tenant`

### 500 Group Membership List Request Internal Server Error

Internal Server Error

- `detail` (InternalServerErrorBodyDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `errorId` (string, optional)

## Types

### GroupMembership

Indicates that a Principal is a member of Group. Role indicates that the Principal is a member of a subgroup, such as Admins of the Group. Teams are the canonical example of a Group.

- `__typename` (string, optional)
- `createdAt` (string, optional)
- `group` (Group, optional)
- `id` (string, optional)
- `member` (PrincipalRef, optional)
- `modifiedAt` (string, optional)
- `role` (enum, optional)
  - Allowed values: `MEMBER`, `ADMIN`

### GeneralErrorDetail

### TooManyRequestsErrorBodyDetail

### InternalServerErrorBodyDetail

### Group

### PrincipalRef

- `__typename` (string, optional)
- `id` (string, optional)

### Organization

Represents a group of users within Benchling, typically corresponding to a company, department, or research group. Organizations provide a many-to-many relationship between users—each user can belong to multiple organizations, and each organization can have multiple users. Users are designated as either ADMIN (with management privileges) or MEMBER within the organization via `GroupMembership`. Organizations can own resources like Projects and Folders, and can contain Teams for finer-grained user grouping. Organizations also control access settings such as whether members can create personal ownables and what default policies apply to new resources. In the UI, organizations appear in user profiles and are used for sharing and access control throughout Benchling.

- `__typename` (string, optional)
- `createdAt` (string, optional)
- `handle` (string, optional)
- `id` (string, optional)
- `memberships` (string, optional)
- `modifiedAt` (string, optional)
- `name` (string, optional, nullable)

### Team

Represents a subgroup of users within an `Organization`, enabling finer-grained user management and data sharing. Teams belong to exactly one organization, and users may only join a team if they are already members of that team's parent organization. Each team member has either ADMIN or MEMBER role (see `GroupMembership`): admins can manage team membership, while members receive standard access. Unlike Organizations, teams cannot directly own Projects or Folders—they are used for collaboration and access control purposes. Teams can be configured with `provisionedCapabilities` to grant specific Benchling capabilities to members upon joining. The `membersAreAdministratorsOfSchemas` flag controls whether team members can create and update automation, result, and request schemas.

- `__typename` (string, optional)
- `createdAt` (string, optional)
- `description` (string, optional)
- `id` (string, optional)
- `membersAreAdministratorsOfSchemas` (boolean, optional) — Team members can create and update automation, result, and request schemas.
- `memberships` (string, optional)
- `modifiedAt` (string, optional)
- `name` (string, optional)
- `organization` (OrganizationRef, optional)

### OrganizationRef

- `__typename` (string, optional)
- `id` (string, optional)

## Examples

**Response**

```json
{
  "items": [
    {
      "__typename": "__typename",
      "createdAt": "createdAt",
      "id": "id",
      "modifiedAt": "modifiedAt",
      "role": "MEMBER"
    }
  ],
  "nextToken": "nextToken"
}
```

**SDK Code**

```python
import requests

url = "https://{tenant_name}.benchling.com/api/v3/group-membership/items"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://{tenant_name}.benchling.com/api/v3/group-membership/items';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```