Create a group

⚠️
Preview — this feature is being built; the design below is the spec.
POST https://app.syntic.ai/v1/organizations/groups

Create a group of members and give the whole group roles in workspaces. Granting access through groups keeps permissions consistent when people join, move teams or leave.

For how this fits into a full workflow, see Groups and roles.

Headers

HeaderRequiredValue
AuthorizationYesBearer <admin key>: an Admin API key (sk_admin_...). Inference keys are refused with 403 admin_key_required. See Admin API keys.
syntic-betaYes, while in previewadmin-2026-11-01. Without it the call fails with 400 beta_required. See Versioning.
Content-TypeYesapplication/json
Idempotency-KeyNoUp to 255 characters. Retrying with the same key within 24 hours returns the first result instead of acting twice. See Idempotency.

Body parameters

ParameterTypeRequiredNotes
namestringYes1 to 64 characters, unique in the organization.
descriptionstringNoUp to 200 characters.
workspace_rolesarrayNoItems {workspace_id, role}; role is workspace_user, workspace_developer or workspace_admin.

Response

201 Created, Content-Type: application/json

{
  "id": "grp_01JCM0N2Q4S6U8W0Y2A4",
  "type": "group",
  "name": "data-science",
  "description": "Analysts and ML engineers",
  "source": "manual",
  "workspace_roles": [
    {
      "workspace_id": "wrkspc_01JC0A2C4E6G8J0L2N4Q",
      "role": "workspace_developer"
    }
  ],
  "member_count": 0,
  "created_at": "2026-09-01T10:00:00Z",
  "updated_at": "2026-11-01T10:00:00Z"
}
FieldTypeDescription
idstringStarts with grp_.
sourcestringmanual, or scim for groups pushed by your identity provider. SCIM groups are read-only here except for workspace_roles.
workspace_rolesarrayRoles every member receives in each workspace. A member’s effective role is the highest of their own and their groups’ roles.
member_countintegerCurrent members.

Examples

curl -sS "https://app.syntic.ai/v1/organizations/groups" \
  -H "Authorization: Bearer $SYNTIC_ADMIN_KEY" \
  -H "syntic-beta: admin-2026-11-01" \
  -H "Idempotency-Key: 8d6f0c1e-4b2a-4a57-9f0e-2f1d3c4b5a69" \
  -H "Content-Type: application/json" \
  -d '{
      "name": "data-science",
      "description": "Analysts and ML engineers",
      "workspace_roles": [
        {
          "workspace_id": "wrkspc_01JC0A2C4E6G8J0L2N4Q",
          "role": "workspace_developer"
        }
      ]
    }'

Errors

Errors use the error envelope and carry a request_id. Codes specific to this operation:

StatustypecodeWhen
400invalid_request_errorbeta_requiredThe syntic-beta header is missing.
409conflict_errorname_takenAnother group has this name.
401authentication_errorinvalid_api_keyThe admin key is missing, unknown, revoked or expired.
403permission_erroradmin_key_requiredAn inference key was used.
429rate_limit_errorrate_limitedToo many requests; wait for Retry-After. See Rate-limit headers.
Was this page helpful?