List workspace members

List effective workspace members, ordered by email, including explicit grants and inherited organization Admin access. Use each member’s userId for member administration. Requires workspace read access.

OAuth scope: api:read.

GET/api/v2/workspaces/{workspaceId}/members
X-API-Key<token>

Send a personal or workspace API key in X-API-Key. See key types and access; operations that reject workspace keys say so in their description.

In: header

Request examples use an API key. For OAuth, replace the X-API-Key header with Authorization: Bearer YOUR_ACCESS_TOKEN.

curl -X GET "https://www.sim.ai/api/v2/workspaces/string/members" \  -H "X-API-Key: YOUR_API_KEY"
fetch("https://www.sim.ai/api/v2/workspaces/string/members", {  method: "GET",  headers: {    "X-API-Key": "YOUR_API_KEY"  }})
package mainimport (  "fmt"  "net/http"  "io/ioutil")func main() {  url := "https://www.sim.ai/api/v2/workspaces/string/members"  req, _ := http.NewRequest("GET", url, nil)  req.Header.Add("X-API-Key", "YOUR_API_KEY")  res, _ := http.DefaultClient.Do(req)  defer res.Body.Close()  body, _ := ioutil.ReadAll(res.Body)  fmt.Println(res)  fmt.Println(string(body))}
import requestsurl = "https://www.sim.ai/api/v2/workspaces/string/members"response = requests.request("GET", url, headers = {  "X-API-Key": "YOUR_API_KEY"})print(response.text)
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.net.http.HttpResponse.BodyHandlers;import java.time.Duration;HttpClient client = HttpClient.newBuilder()  .connectTimeout(Duration.ofSeconds(10))  .build();HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()  .uri(URI.create("https://www.sim.ai/api/v2/workspaces/string/members"))  .header("X-API-Key", "YOUR_API_KEY")  .GET()  .build();try {  HttpResponse<String> response = client.send(requestBuilder.build(), BodyHandlers.ofString());  System.out.println("Status code: " + response.statusCode());  System.out.println("Response body: " + response.body());} catch (Exception e) {  e.printStackTrace();}
using System;using System.Net.Http;using System.Text;var client = new HttpClient();client.DefaultRequestHeaders.Add("X-API-Key", "YOUR_API_KEY");var response = await client.GetAsync("https://www.sim.ai/api/v2/workspaces/string/members");var responseBody = await response.Content.ReadAsStringAsync();
{
  "data": [
    {
      "userId": "user-123",
      "email": "jane@example.com",
      "name": "Jane Smith",
      "image": null,
      "role": "admin",
      "isExternal": false,
      "joinedAt": "2026-01-15T10:30:00.000Z"
    }
  ],
  "nextCursor": null
}
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "Invalid request"
  }
}
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Authentication required"
  }
}
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Insufficient workspace permissions",
    "details": {
      "code": "INSUFFICIENT_WORKSPACE_ROLE"
    }
  }
}
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Not found"
  }
}
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "API rate limit exceeded",
    "details": {
      "retryAfter": "2026-01-01T00:00:30.000Z"
    }
  }
}
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "Internal server error"
  }
}
{
  "error": {
    "code": "SERVICE_UNAVAILABLE",
    "message": "Service temporarily unavailable"
  }
}

Path parameters

workspaceId*string

Workspace to retrieve.

Length1 <= length <= 128

Query parameters

limit?integer

Maximum members to return per page. Must be a whole number from 1 to 100. Defaults to 50.

Default50
Range1 <= value <= 100
cursor?string

Opaque cursor from the previous page. Send it back with the same sort and filters; only limit may change. Change anything else and pagination must restart without a cursor.

Length1 <= length

Response body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json