Skip to content

Permission groups

Bulk add permission group members

Assign up to 1000 selected organization members, or the entire organization roster, atomically. Existing assignments are skipped and users outside the organization are ignored. Any overlapping membership conflict rejects the entire batch. Requires organization Admin or owner access and active Access Control. Workspace API keys return `403`; use a personal API key or scoped OAuth token. OAuth scope: `api:write`.

POST/api/v2/organizations/{organizationId}/permission-groups/{groupId}/members/bulk

Assign up to 1000 selected organization members, or the entire organization roster, atomically. Existing assignments are skipped and users outside the organization are ignored. Any overlapping membership conflict rejects the entire batch. Requires organization Admin or owner access and active Access Control. Workspace API keys return 403; use a personal API key or scoped OAuth token.

OAuth scope: api:write.

Authentication

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.

Send X-API-Key in the request header.

Alternatively

Send a Sim OAuth access token in Authorization: Bearer. See OAuth authentication and scopes.

Authorization: Bearer YOUR_ACCESS_TOKEN

Required scopes: api:write

OAuth flows
json
{
  "authorizationCode": {
    "authorizationUrl": "https://www.sim.ai/api/auth/oauth2/authorize",
    "tokenUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "refreshUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "scopes": {
      "api:read": "Read your workspaces, workflows, files, tables, and logs",
      "api:write": "Read, create, change, run, and delete resources in your workspaces",
      "offline_access": "Stay signed in without asking again"
    }
  }
}

OAuth scope: api:write.

Path parameters

organizationIdstringRequired

Organization that owns the permission groups.

minLength
1
groupIdstringRequired

Permission group identifier.

minLength
1

Request body

Required

Selected organization members or the entire current organization roster.

object

Selected organization members or the entire current organization roster.

2 fields
userIdsarray

Organization member identifiers. Existing group members are skipped; users outside the organization are ignored.

minItems
1
maxItems
1000
Schema details
Array itemstring
minLength
1
addAllOrganizationMembersboolean

Add every current organization member in bounded batches within one transaction. Cannot be combined with userIds.

Additional properties are not allowed.

Request example 1

json
{
  "userIds": [
    "user-123"
  ]
}

Responses

200

Counts of added members and existing assignments skipped.

object

Counts of added members and existing assignments skipped.

1 field
dataobjectRequired

Response data.

2 fields
addednumberRequired

Number of members added.

skippednumberRequired

Number of selected organization members already in the group.

Additional properties are not allowed.

Additional properties are not allowed.

Response example 1

json
{
  "data": {
    "added": 1,
    "skipped": 0
  }
}

Response headers

X-RateLimit-Limitinteger

Maximum requests allowed in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Remaininginteger

Requests remaining in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Resetstring

ISO 8601 timestamp when the current rate-limit window resets.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Was this helpful?
Suggest an edit