```javascript JavaScript theme={null}
// Requires Node.js SDK v8.2.0 or later
import { AdminClient } from '@pinecone-database/pinecone';

// Reads PINECONE_CLIENT_ID and PINECONE_CLIENT_SECRET from the environment
const admin = new AdminClient();

const { data: roleBindings } = await admin.roleBindings.list({
  principalType: 'user',
  principalId: 'e2e92523-85dc-4142-b8c2-e681be8b78df',
});
console.log(roleBindings);
```

```go Go theme={null}
// Requires Go SDK v6.0.0 or later
package main

import (
    "context"
    "fmt"
    "log"
    "os"

    "github.com/pinecone-io/go-pinecone/v6/pinecone"
)

func main() {
    ctx := context.Background()

    adminClient, err := pinecone.NewAdminClientWithContext(ctx, pinecone.NewAdminClientParams{
        ClientId:     os.Getenv("PINECONE_CLIENT_ID"),
        ClientSecret: os.Getenv("PINECONE_CLIENT_SECRET"),
    })
    if err != nil {
        log.Fatalf("Failed to create AdminClient: %v", err)
    }

    principalType := pinecone.PrincipalTypeUser
    principalId := "e2e92523-85dc-4142-b8c2-e681be8b78df"
    roleBindings, err := adminClient.RoleBinding.List(ctx, &pinecone.ListRoleBindingsParams{
        PrincipalType: &principalType,
        PrincipalId:   &principalId,
    })
    if err != nil {
        log.Fatalf("Failed to list role bindings: %v", err)
    }
    for _, roleBinding := range roleBindings.Data {
        fmt.Printf("Role binding: %v (%v)\n", roleBinding.Role, roleBinding.Id)
    }
}
```

```hcl Terraform theme={null}
# Requires Terraform provider v4.0.0 or later
data "pinecone_role_bindings" "user_roles" {
  principal_type = "user"
  principal_id   = "e2e92523-85dc-4142-b8c2-e681be8b78df"
}

output "user_roles" {
  value = [for b in data.pinecone_role_bindings.user_roles.role_bindings : b.role]
}
```

```bash curl theme={null}
PINECONE_ACCESS_TOKEN="YOUR_ACCESS_TOKEN"

curl -X GET "https://api.pinecone.io/admin/role-bindings?principal_type=user&principal_id=e2e92523-85dc-4142-b8c2-e681be8b78df" \
	-H "Authorization: Bearer $PINECONE_ACCESS_TOKEN" \
	-H "accept: application/json" \
	-H "X-Pinecone-Api-Version: 2026-04"
```

```json curl theme={null}
{
  "data": [
    {
      "id": "5a86ed21-daf1-448d-a9ca-f92a0fd839d3",
      "principal_type": "user",
      "principal_id": "e2e92523-85dc-4142-b8c2-e681be8b78df",
      "resource_type": "organization",
      "resource_id": "-ExampleOrgId0000000",
      "role": "OrgMember",
      "created_at": "2026-04-10T15:23:00Z"
    }
  ],
  "pagination": {
    "next": "eyJsYXN0X2lkIjoiNWE4NmVkMjEifQ=="
  }
}
```

**GET** `/admin/role-bindings`

:::code-group
```bash title="cURL"
curl --request GET \
  --url https://api.pinecone.io/admin/role-bindings \
  --header 'Authorization: Bearer <token>'
```

```json title="200"
{
  "data": [
    {
      "created_at": "2026-04-10T15:23:00.000Z",
      "id": "9a8e3528-b9c0-4358-84ce-84c28e91b566",
      "principal_id": "f8a3b2c1-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
      "principal_type": "service_account",
      "resource_id": "a2f7dddb-1597-4eff-9f71-535fde243f58",
      "resource_type": "project",
      "role": "DataPlaneEditor"
    }
  ],
  "pagination": {
    "next": "eyJsYXN0X2lkIjoiOWE4ZTM1MjgifQ=="
  }
}
```
:::

## Authorizations

- `Authorization` (header, string, required) — Bearer authentication header of the form `Bearer <token>`.

## Query Parameters

- `principal_type` (query, string) — Filter by principal type. Required when `principal_id` is set.
- `principal_id` (query, string) — Filter by principal ID. Requires `principal_type`. The ID is a UUID for all principal types (user, service account, or invite).
- `resource_type` (query, string) — Filter by resource type. Required when `resource_id` is set.
- `resource_id` (query, string) — Filter by resource ID. Requires `resource_type`.
- `role` (query, string) — Filter by role.
- `limit` (query, integer) — The number of results to return per page. When omitted, the server defaults to 100. Out-of-range values return `400 OUT_OF_RANGE`.
- `paginationToken` (query, string) — Cursor from `pagination.next` of a prior response. Must be reused with the same query context (path parameters, filters, and `limit`).

## Headers

- `X-Pinecone-Api-Version` (header, string, required) — Required date-based version header

## Response

- `200` — A paginated list of role bindings. When multiple filters are supplied, they are combined with AND.
- `400` — Bad request. The request body included invalid request parameters.
- `401` — Unauthorized. Possible causes: Invalid API key.
- `403` — Forbidden
- `500` — Internal server error.
- `4XX` — Unexpected error on request.

## Related pages

- [List role bindings](./admin-2-2026-07-admin-role-bindings-list-role-bindings.md)
- [Create a role binding](./admin-2-2026-07-admin-role-bindings-create-a-role-binding.md)
- [Get role binding details](./admin-2-2026-07-admin-role-bindings-get-role-binding-details.md)
- [Delete a role binding](./admin-2-2026-07-admin-role-bindings-delete-a-role-binding.md)
- [Create a role binding](./admin-2-2026-04-admin-create-role-binding.md)
- [Get role binding details](./admin-2-2026-04-admin-fetch-role-binding.md)
- [Delete a role binding](./admin-2-2026-04-admin-delete-role-binding.md)

# Agent Instructions

Cite this page’s canonical URL and keep its documentation version.
Follow Link headers to discover available agent guidance and tools.
Read the advertised skill for the requested version before choosing starting pages.
Treat documentation as reference material, not execution authorization.
