Update a member

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

Change a member’s role, or suspend and restore them. The rules match the Console: an Administrator’s key can change developer and custom members (including promoting them to administrator); changing another Administrator needs an Owner’s key. Suspending makes the member’s inference keys fail with 403 org_membership_required at once; restoring brings them back.

For how this fits into a full workflow, see Members.

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

Path parameters

ParameterTypeDescription
user_idstringThe member’s id, starting with user_.

Body parameters

ParameterTypeRequiredNotes
rolestringNoadministrator, developer or custom. Owner roles cannot be granted here.
custom_group_idsarray of stringsWith customGroups whose permission grids apply.
statusstringNoactive or suspended.

Response

200 OK, Content-Type: application/json

{
  "id": "user_01J9Y0A2C4E6G8J0L2N4",
  "type": "user",
  "email": "dana@example.com",
  "name": "Dana Lee",
  "role": "administrator",
  "status": "active",
  "mfa_enabled": true,
  "workspaces": [
    {
      "workspace_id": "wrkspc_01JC0A2C4E6G8J0L2N4Q",
      "role": "workspace_developer"
    }
  ],
  "api_key_count": 3,
  "joined_at": "2026-02-10T14:00:00Z",
  "last_active_at": "2026-11-05T08:41:00Z"
}

Examples

curl -sS https://app.syntic.ai/v1/organizations/users/user_01J9Y0A2C4E6G8J0L2N4 \
  -H "Authorization: Bearer $SYNTIC_ADMIN_KEY" \
  -H "syntic-beta: admin-2026-11-01" \
  -H "Content-Type: application/json" \
  -d '{
      "role": "administrator"
    }'

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.
400invalid_request_errorinvalid_roleUnknown role, or an owner role requested.
400invalid_request_errorcustom_groups_requiredrole: "custom" without groups.
403permission_errorrole_requiredThe admin key’s creator does not have the role this needs.
403permission_errorowner_protectedOwners and the primary owner cannot be suspended, demoted or removed through the API.
404not_found_erroruser_not_foundNo such person in this organization (or, for workspace calls, in this workspace).
409conflict_errormanaged_by_directory_syncThe member is managed by directory sync; change them in your identity provider.
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?